Re: use GUC for cmdline - Mailing list pgsql-patches
From | Marko Kreen |
---|---|
Subject | Re: use GUC for cmdline |
Date | |
Msg-id | 20010622105242.A14582@l-t.ee Whole thread Raw |
In response to | Re: use GUC for cmdline (Tom Lane <tgl@sss.pgh.pa.us>) |
Responses |
Re: use GUC for cmdline
|
List | pgsql-patches |
On Thu, Jun 21, 2001 at 09:09:20PM -0400, Tom Lane wrote: > Marko Kreen <marko@l-t.ee> writes: > >> Uh, removing the security checks is NOT what I had in mind. Wasn't > >> my example clear enough? > > > Ee, this is done in set_config_option? > > No, you still need the if (secure) --- because that changes while > we're reading the switches. *If* secure is true, it's okay to set > the option with PGC_POSTMASTER context. secure_ctx changes too. it will be PGC_BACKEND after '-p'. I did it this way, because I imagined the 'if (secure)' as a permission check for non-GUC variables. For GUC the permission checks should be done in guc.c, this also means clearer code in postgres.c. Now that I think about it, it could be even simplified to the following. This is mostly matter of taste, and I can ofcourse do it your way, but ATM it seems to me you missed the secure_ctx = ctx; line in last patch. -- marko diff -u src/backend/tcop/postgres.c src/backend/tcop/postgres.c --- src/backend/tcop/postgres.c +++ src/backend/tcop/postgres.c @@ -1120,8 +1120,8 @@ char *potential_DataDir = NULL; - /* all options are allowed if not under postmaster */ - ctx = IsUnderPostmaster ? PGC_BACKEND : PGC_POSTMASTER; + /* all options are allowed if not under postmaster or until -p */ + ctx = PGC_POSTMASTER; /* * Catch standard options before doing much else. This even works on @@ -1207,8 +1207,7 @@ /* * specify the size of buffer pool */ - if (secure) - SetConfigOption("shared_buffers", optarg, ctx, true); + SetConfigOption("shared_buffers", optarg, ctx, true); break; case 'C': @@ -1227,8 +1226,8 @@ case 'd': /* debug level */ tmp = "true"; SetConfigOption("debug_level", optarg, ctx, true); - if (DebugLvl >= 1); - SetConfigOption("log_connections", tmp, ctx, true); + if (DebugLvl >= 1) + SetConfigOption("log_connections", tmp, ctx, true); if (DebugLvl >= 2) SetConfigOption("debug_print_query", tmp, ctx, true); if (DebugLvl >= 3) @@ -1260,8 +1259,7 @@ /* * turn off fsync */ - if (secure) - SetConfigOption("fsync", "false", ctx, true); + SetConfigOption("fsync", "false", ctx, true); break; case 'f': @@ -1356,6 +1354,7 @@ DBName = strdup(optarg); secure = false; /* subsequent switches are NOT * secure */ + ctx = PGC_BACKEND; } break; diff -u src/backend/utils/misc/guc.c src/backend/utils/misc/guc.c --- src/backend/utils/misc/guc.c +++ src/backend/utils/misc/guc.c @@ -196,7 +196,7 @@ {"fsync", PGC_SIGHUP, &enableFsync, true, NULL}, {"silent_mode", PGC_POSTMASTER, &SilentMode, false, NULL}, - {"log_connections", PGC_SIGHUP, &Log_connections, false, NULL}, + {"log_connections", PGC_BACKEND, &Log_connections, false, NULL}, {"log_timestamp", PGC_SIGHUP, &Log_timestamp, false, NULL}, {"log_pid", PGC_SIGHUP, &Log_pid, false, NULL},
pgsql-patches by date: