#!/oracle/EPP/11203/perl/bin/perl ############## #first go through and close all file descriptors greater than or equal to #three. this is a workaround for JVM bug #http://developer.java.sun.com/developer/bugParade/bugs/4843136.html #where Java doesn't always close both ends of pipe in child. ############## for($i = 3;$i < 1024; $i++) { if (! open(TMPHANDLE, "<&=$i")) { close(TMPHANDLE); } } delete($ENV{"LD_LIBRARY_PATH"}); delete($ENV{"SHLIB_PATH"}); delete($ENV{"LIBPATH"}); delete($ENV{"DYLD_LIBRARY_PATH"}); delete($ENV{"NLS_LANG"}); #Bug#5066096, unset ORA_NLS* foreach $ENV_VAR_KEY (keys(%ENV)) { $ORA_NLS_ENV_VAR=substr($ENV_VAR_KEY,0,7); if( $ORA_NLS_ENV_VAR eq "ORA_NLS" ) { delete($ENV{$ENV_VAR_KEY}); } } delete($ENV{"CONSOLE_CFG"}); #bug 5748195 - removing PATH delete($ENV{"PATH"}); if($ENV{"REMOTE_EMDROOT"} eq "") { $ENV{"ORACLE_HOME"}="/oracle/EPP/11203"; $ENV{"EMDROOT"}="/oracle/EPP/11203"; #Bug 4600813 - let emtgtctl compute EMSTATE using emctl getemhome delete($ENV{"EMSTATE"}); } else { $ENV{"ORACLE_HOME"} = $ENV{"REMOTE_EMDROOT"}; $ENV{"EMDROOT"} = $ENV{"REMOTE_EMDROOT"}; } #bug 5748195 - untainting the arguments passed to exec $numArgs = $#ARGV + 1; foreach $argnum (0 .. $#ARGV) { $data = $ARGV[$argnum]; if ($data =~ /(.+)$/) { $data = $1; # $data now untainted $newargs[$argnum] = $data; } } exec("$ENV{'EMDROOT'}/bin/emtgtctl2 @newargs");