10
10
* Written by Peter Eisentraut <peter_e@gmx.net>.
11
11
*
12
12
* IDENTIFICATION
13
- * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.198 2004/04/07 05:05:50 momjian Exp $
13
+ * $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.199 2004/04/07 18:52:26 momjian Exp $
14
14
*
15
15
*--------------------------------------------------------------------
16
16
*/
@@ -2730,13 +2730,12 @@ set_config_option(const char *name, const char *value,
2730
2730
name )));
2731
2731
return false;
2732
2732
}
2733
- if (record -> context == PGC_USERLIMIT &&
2734
- IsUnderPostmaster && !superuser ())
2733
+ if (record -> context == PGC_USERLIMIT )
2735
2734
{
2736
2735
if (newval < conf -> reset_val )
2737
2736
{
2738
2737
/* Limit non-superuser changes */
2739
- if (source > PGC_S_UNPRIVILEGED )
2738
+ if (source > PGC_S_UNPRIVILEGED && ! superuser () )
2740
2739
{
2741
2740
ereport (elevel ,
2742
2741
(errcode (ERRCODE_INSUFFICIENT_PRIVILEGE ),
@@ -2750,7 +2749,8 @@ set_config_option(const char *name, const char *value,
2750
2749
{
2751
2750
/* Allow change if admin should override */
2752
2751
if (source < PGC_S_UNPRIVILEGED &&
2753
- record -> source > PGC_S_UNPRIVILEGED )
2752
+ record -> source > PGC_S_UNPRIVILEGED &&
2753
+ !superuser ())
2754
2754
changeVal = changeValOrig ;
2755
2755
}
2756
2756
}
@@ -2830,16 +2830,15 @@ set_config_option(const char *name, const char *value,
2830
2830
newval , name , conf -> min , conf -> max )));
2831
2831
return false;
2832
2832
}
2833
- if (record -> context == PGC_USERLIMIT &&
2834
- IsUnderPostmaster && !superuser ())
2833
+ if (record -> context == PGC_USERLIMIT )
2835
2834
{
2836
2835
/* handle log_min_duration_statement, -1=disable */
2837
2836
if ((newval != -1 && conf -> reset_val != -1 &&
2838
2837
newval > conf -> reset_val ) || /* increase duration */
2839
2838
(newval == -1 && conf -> reset_val != -1 )) /* turn off */
2840
2839
{
2841
2840
/* Limit non-superuser changes */
2842
- if (source > PGC_S_UNPRIVILEGED )
2841
+ if (source > PGC_S_UNPRIVILEGED && ! superuser () )
2843
2842
{
2844
2843
ereport (elevel ,
2845
2844
(errcode (ERRCODE_INSUFFICIENT_PRIVILEGE ),
@@ -2855,7 +2854,8 @@ set_config_option(const char *name, const char *value,
2855
2854
(newval != -1 && * conf -> variable == -1 )) /* turn on */
2856
2855
{
2857
2856
if (source < PGC_S_UNPRIVILEGED &&
2858
- record -> source > PGC_S_UNPRIVILEGED )
2857
+ record -> source > PGC_S_UNPRIVILEGED &&
2858
+ !superuser ())
2859
2859
changeVal = changeValOrig ;
2860
2860
}
2861
2861
}
@@ -2935,12 +2935,11 @@ set_config_option(const char *name, const char *value,
2935
2935
newval , name , conf -> min , conf -> max )));
2936
2936
return false;
2937
2937
}
2938
- if (record -> context == PGC_USERLIMIT &&
2939
- IsUnderPostmaster && !superuser ())
2938
+ if (record -> context == PGC_USERLIMIT )
2940
2939
/* No REAL PGC_USERLIMIT */
2941
2940
{
2942
2941
/* Limit non-superuser changes */
2943
- if (source > PGC_S_UNPRIVILEGED )
2942
+ if (source > PGC_S_UNPRIVILEGED && ! superuser () )
2944
2943
{
2945
2944
ereport (elevel ,
2946
2945
(errcode (ERRCODE_INSUFFICIENT_PRIVILEGE ),
@@ -2951,7 +2950,8 @@ set_config_option(const char *name, const char *value,
2951
2950
}
2952
2951
/* Allow change if admin should override */
2953
2952
if (source < PGC_S_UNPRIVILEGED &&
2954
- record -> source > PGC_S_UNPRIVILEGED )
2953
+ record -> source > PGC_S_UNPRIVILEGED &&
2954
+ !superuser ())
2955
2955
changeVal = false;
2956
2956
}
2957
2957
}
@@ -3023,8 +3023,7 @@ set_config_option(const char *name, const char *value,
3023
3023
return false;
3024
3024
}
3025
3025
3026
- if (record -> context == PGC_USERLIMIT &&
3027
- IsUnderPostmaster && !superuser ())
3026
+ if (record -> context == PGC_USERLIMIT )
3028
3027
{
3029
3028
int var_value , reset_value , new_value ;
3030
3029
const char * (* var_hook ) (int * var , const char * newval ,
@@ -3045,7 +3044,7 @@ set_config_option(const char *name, const char *value,
3045
3044
if (new_value > reset_value )
3046
3045
{
3047
3046
/* Limit non-superuser changes */
3048
- if (source > PGC_S_UNPRIVILEGED )
3047
+ if (source > PGC_S_UNPRIVILEGED && ! superuser () )
3049
3048
{
3050
3049
ereport (elevel ,
3051
3050
(errcode (ERRCODE_INSUFFICIENT_PRIVILEGE ),
@@ -3060,7 +3059,8 @@ set_config_option(const char *name, const char *value,
3060
3059
if (new_value < var_value )
3061
3060
{
3062
3061
if (source < PGC_S_UNPRIVILEGED &&
3063
- record -> source > PGC_S_UNPRIVILEGED )
3062
+ record -> source > PGC_S_UNPRIVILEGED &&
3063
+ !superuser ())
3064
3064
changeVal = changeValOrig ;
3065
3065
}
3066
3066
}
0 commit comments