42
42
* Portions Copyright (c) 1994, Regents of the University of California
43
43
* Portions taken from FreeBSD.
44
44
*
45
- * $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.111 2006/02/24 00:55:49 adunstan Exp $
45
+ * $PostgreSQL: pgsql/src/bin/initdb/initdb.c,v 1.112 2006/02/24 02:02:41 adunstan Exp $
46
46
*
47
47
*-------------------------------------------------------------------------
48
48
*/
@@ -95,9 +95,6 @@ static char *authmethod = "";
95
95
static bool debug = false;
96
96
static bool noclean = false;
97
97
static bool show_setting = false;
98
- #ifdef WIN32
99
- static bool restricted_exec = false;
100
- #endif
101
98
102
99
103
100
/* internal vars */
@@ -2426,11 +2423,8 @@ main(int argc, char *argv[])
2426
2423
{"lc-messages" , required_argument , NULL , 7 },
2427
2424
{"no-locale" , no_argument , NULL , 8 },
2428
2425
{"auth" , required_argument , NULL , 'A' },
2429
- {"pwprompt" , no_argument , NULL , 'W' },
2426
+ {"pwprompt" , no_argument , NULL , 'W' },
2430
2427
{"pwfile" , required_argument , NULL , 9 },
2431
- #ifdef WIN32
2432
- {"restrictedexec" , no_argument , NULL , 10 },
2433
- #endif
2434
2428
{"username" , required_argument , NULL , 'U' },
2435
2429
{"help" , no_argument , NULL , '?' },
2436
2430
{"version" , no_argument , NULL , 'V' },
@@ -2450,6 +2444,9 @@ main(int argc, char *argv[])
2450
2444
* environment */
2451
2445
char bin_dir [MAXPGPATH ];
2452
2446
char * pg_data_native ;
2447
+ #ifdef WIN32
2448
+ char * restrict_env ;
2449
+ #endif
2453
2450
static const char * subdirs [] = {
2454
2451
"global" ,
2455
2452
"pg_xlog" ,
@@ -2540,11 +2537,6 @@ main(int argc, char *argv[])
2540
2537
case 9 :
2541
2538
pwfilename = xstrdup (optarg );
2542
2539
break ;
2543
- #ifdef WIN32
2544
- case 10 :
2545
- restricted_exec = true;
2546
- break ;
2547
- #endif
2548
2540
case 's' :
2549
2541
show_setting = true;
2550
2542
break ;
@@ -2556,6 +2548,7 @@ main(int argc, char *argv[])
2556
2548
}
2557
2549
}
2558
2550
2551
+
2559
2552
/* Non-option argument specifies data directory */
2560
2553
if (optind < argc )
2561
2554
{
@@ -2644,16 +2637,18 @@ main(int argc, char *argv[])
2644
2637
* Before we execute another program, make sure that we are running with a
2645
2638
* restricted token. If not, re-execute ourselves with one.
2646
2639
*/
2647
- if (!restricted_exec )
2640
+
2641
+ if ((restrict_env = getenv ("PG_RESTRICT_EXEC" )) == NULL
2642
+ || strcmp (restrict_env ,"1" ) != 0 )
2648
2643
{
2649
2644
PROCESS_INFORMATION pi ;
2650
2645
char * cmdline ;
2651
2646
2652
2647
ZeroMemory (& pi , sizeof (pi ));
2653
2648
2654
- cmdline = pg_malloc ( strlen ( GetCommandLine ()) + 19 );
2655
- strcpy ( cmdline , GetCommandLine ());
2656
- strcat ( cmdline , " --restrictedexec " );
2649
+ cmdline = xstrdup ( GetCommandLine ());
2650
+
2651
+ putenv ( "PG_RESTRICT_EXEC=1 " );
2657
2652
2658
2653
if (!CreateRestrictedProcess (cmdline , & pi ))
2659
2654
{
0 commit comments