From e4ca916b6ec18feec56c805bacf17b00342d2587 Mon Sep 17 00:00:00 2001 From: Nathan Kinder Date: Jan 28 2011 19:10:39 +0000 Subject: Bug 672468 - Don't use empty path elements in LD_LIBRARY_PATH This patch adds a bit more logic to the creation of the libpath to avoid empty path elements and leading and trailing colons. --- diff --git a/admserv/cfgstuff/start-ds-admin.in b/admserv/cfgstuff/start-ds-admin.in index 06a720c..8e497f7 100644 --- a/admserv/cfgstuff/start-ds-admin.in +++ b/admserv/cfgstuff/start-ds-admin.in @@ -27,9 +27,43 @@ unset PASSWORD_PIPE -LD_LIBRARY_PATH=@LIBPATH@:${LD_LIBRARY_PATH};export LD_LIBRARY_PATH -LIBPATH=@LIBPATH@:${LIBPATH}:/usr/threads/lib:/usr/ibmcxx/lib:/usr/lib:/lib; export LIBPATH -SHLIB_PATH=@LIBPATH@:${SHLIB_PATH}; export SHLIB_PATH +ldlibpath_add() { + [ -z "$1" ] && return + LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1 +} + +shlibpath_add() { + [ -z "$1" ] && return + SHLIB_PATH=${SHLIB_PATH:+$SHLIB_PATH:}$1 +} + +libpath_add() { + [ -z "$1" ] && return + LIBPATH=${LIBPATH:+$LIBPATH:}$1 +} + +OLD_LD_LIBRARY_PATH=${LD_LIBRARY_PATH} +OLD_SHLIB_PATH=${SHLIB_PATH} +OLD_LIBPATH=${LIBPATH} +LD_LIBRARY_PATH= +SHLIB_PATH= +LIBPATH= + +ldlibpath_add "@LIBPATH@" +ldlibpath_add "${OLD_LD_LIBRARY_PATH}" +export LD_LIBRARY_PATH + +shlibpath_add "@LIBPATH@" +shlibpath_add "${OLD_SHLIB_PATH}" +export SHLIB_PATH + +libpath_add "@LIBPATH@" +libpath_add "${OLD_LIBPATH}" +libpath_add "/usr/threads/lib" +libpath_add "/usr/ibmcxx/lib" +libpath_add "/usr/lib" +libpath_add "/lib" +export LIBPATH HTTPD=@HTTPD@ diff --git a/admserv/newinst/src/AdminServer.pm.in b/admserv/newinst/src/AdminServer.pm.in index a91aadd..bee77a6 100644 --- a/admserv/newinst/src/AdminServer.pm.in +++ b/admserv/newinst/src/AdminServer.pm.in @@ -369,7 +369,9 @@ sub updateHttpConfFiles { # this is required on some platforms in order to execute the config command my $savepath = $ENV{SHLIB_PATH} || $ENV{LD_LIBRARY_PATH}; - $ENV{LD_LIBRARY_PATH} = "@LIBPATH@:$savepath"; + $ENV{LD_LIBRARY_PATH} = ""; + libpath_add("@LIBPATH@"); + libpath_add("$savepath"); $ENV{SHLIB_PATH} = $ENV{LD_LIBRARY_PATH}; my $cmd = "@cgibindir@/config op=set configuration.nsSuiteSpotUser=\"$user\""; if (!defined($origport) or ($port != $origport)) { # need to change the port number @@ -626,6 +628,18 @@ sub removeAdminServer { return; } +sub libpath_add { + my $libpath = shift; + + if ($libpath) { + if ($ENV{'LD_LIBRARY_PATH'}) { + $ENV{'LD_LIBRARY_PATH'} = "$ENV{'LD_LIBRARY_PATH'}:$libpath"; + } else { + $ENV{'LD_LIBRARY_PATH'} = "$libpath"; + } + } +} + 1; # emacs settings