ldap/admin/src/scripts/10fixrundir.pl | 11 +++
ldap/admin/src/scripts/DSCreate.pm.in | 13 ++--
ldap/admin/src/scripts/start-dirsrv.in | 15 ++++
ldap/admin/src/scripts/template-bak2db.in | 15 +++-
ldap/admin/src/scripts/template-bak2db.pl.in | 21 ++++++
ldap/admin/src/scripts/template-db2bak.in | 15 +++-
ldap/admin/src/scripts/template-db2bak.pl.in | 21 ++++++
ldap/admin/src/scripts/template-db2index.in | 14 +++-
ldap/admin/src/scripts/template-db2index.pl.in | 21 ++++++
ldap/admin/src/scripts/template-db2ldif.in | 15 +++-
ldap/admin/src/scripts/template-db2ldif.pl.in | 21 ++++++
ldap/admin/src/scripts/template-dbverify.in | 15 +++-
ldap/admin/src/scripts/template-fixup-linkedattrs.pl.in | 21 ++++++
ldap/admin/src/scripts/template-fixup-memberof.pl.in | 21 ++++++
ldap/admin/src/scripts/template-ldif2db.in | 15 +++-
ldap/admin/src/scripts/template-ldif2db.pl.in | 22 ++++++-
ldap/admin/src/scripts/template-ldif2ldap.in | 16 ++++-
ldap/admin/src/scripts/template-monitor.in | 17 ++++-
ldap/admin/src/scripts/template-ns-accountstatus.pl.in | 21 ++++++
ldap/admin/src/scripts/template-ns-activate.pl.in | 21 ++++++
ldap/admin/src/scripts/template-ns-inactivate.pl.in | 21 ++++++
ldap/admin/src/scripts/template-ns-newpwpolicy.pl.in | 21 ++++++
ldap/admin/src/scripts/template-restoreconfig.in | 15 ++++
ldap/admin/src/scripts/template-saveconfig.in | 15 ++++
ldap/admin/src/scripts/template-schema-reload.pl.in | 21 ++++++
ldap/admin/src/scripts/template-suffix2instance.in | 15 ++++
ldap/admin/src/scripts/template-syntax-validate.pl.in | 21 ++++++
ldap/admin/src/scripts/template-upgradedb.in | 15 ++++
ldap/admin/src/scripts/template-upgradednformat.in | 15 +++-
ldap/admin/src/scripts/template-usn-tombstone-cleanup.pl.in | 21 ++++++
ldap/admin/src/scripts/template-verify-db.pl.in | 19 +++++-
ldap/admin/src/scripts/template-vlvindex.in | 15 ++++
ldap/servers/slapd/back-ldbm/ldbm_search.c | 8 +-
ldap/servers/slapd/opshared.c | 10 +++
ldap/servers/slapd/pagedresults.c | 37 ++++++++++++
ldap/servers/slapd/proto-slap.h | 2
ldap/servers/slapd/slap.h | 7 ++
wrappers/cl-dump.in | 11 ++-
wrappers/dbscan.in | 10 ++-
wrappers/infadd.in | 12 +++
wrappers/initscript.in | 10 ++-
wrappers/ldap-agent.in | 12 +++
wrappers/ldclt.in | 12 +++
wrappers/ldif.in | 12 +++
wrappers/migratecred.in | 14 +++-
wrappers/mmldif.in | 14 +++-
wrappers/pwdhash.in | 14 +++-
wrappers/repl-monitor.in | 11 ++-
wrappers/rsearch.in | 12 +++
49 files changed, 666 insertions(+), 107 deletions(-)
New commits:
commit 514ce78d6e288c35e9a4949ca7703f358ed6fc3e
Author: Rich Megginson <rmeggins(a)redhat.com>
Date: Thu Jan 13 13:44:15 2011 -0700
Bug 666076 - dirsrv crash (1.2.7.5) with multiple simple paged result searches
https://bugzilla.redhat.com/show_bug.cgi?id=666076
Resolves: bug 666076
Bug Description: dirsrv crash (1.2.7.5) with multiple simple paged result searches
Reviewed by: nkinder, nhosoi (Thanks!)
Branch: Directory_Server_8_2_Branch
Fix Description: Only allow one simple paged results search per-connection
at a time. The new function pagedresults_check_or_set_processing() will
check the flag in the connection to see if pagedresults processing is in
progress. If so, the function will return True and the search will terminate
with LDAP_UNWILLING_TO_PERFORM (as per section 3 in RFC 2696, a server is
allowed to return unwillingToPerform if there is a limit to the number of
outstanding paged search requests from a given client). The processing
flag will be reset once the search result has been sent to the client.
Since the problem is multiple threads in the same connection accessing
the pagedresults data, the workaround is to just set
nsslapd-maxthreadsperconn: 1
in cn=config in dse.ldif.
Platforms tested: RHEL6 x86_64
Flag Day: no
Doc impact: no
diff --git a/ldap/servers/slapd/back-ldbm/ldbm_search.c
b/ldap/servers/slapd/back-ldbm/ldbm_search.c
index c25935d..ccfd68c 100644
--- a/ldap/servers/slapd/back-ldbm/ldbm_search.c
+++ b/ldap/servers/slapd/back-ldbm/ldbm_search.c
@@ -1145,6 +1145,7 @@ ldbm_back_next_search_entry_ext( Slapi_PBlock *pb, int use_extension
)
if ( !use_extension )
{
cache_return( &inst->inst_cache, &(sr->sr_entry) );
+ sr->sr_entry = NULL;
}
if(sr->sr_vlventry != NULL && !use_extension )
@@ -1182,7 +1183,6 @@ ldbm_back_next_search_entry_ext( Slapi_PBlock *pb, int use_extension
)
curtime = current_time();
if ( tlimit != -1 && curtime > stoptime )
{
- slapi_send_ldap_result( pb, LDAP_TIMELIMIT_EXCEEDED, NULL, NULL, nentries,
urls );
/* in case paged results, clean up the conn */
pagedresults_set_search_result(pb->pb_conn, NULL);
slapi_pblock_set( pb, SLAPI_SEARCH_RESULT_SET, NULL );
@@ -1192,13 +1192,13 @@ ldbm_back_next_search_entry_ext( Slapi_PBlock *pb, int
use_extension )
slapi_pblock_set( pb, SLAPI_SEARCH_RESULT_ENTRY, NULL );
delete_search_result_set( &sr );
rc = SLAPI_FAIL_GENERAL;
+ slapi_send_ldap_result( pb, LDAP_TIMELIMIT_EXCEEDED, NULL, NULL, nentries,
urls );
goto bail;
}
/* check lookthrough limit */
if ( llimit != -1 && sr->sr_lookthroughcount >= llimit )
{
- slapi_send_ldap_result( pb, LDAP_ADMINLIMIT_EXCEEDED, NULL, NULL, nentries,
urls );
/* in case paged results, clean up the conn */
pagedresults_set_search_result(pb->pb_conn, NULL);
slapi_pblock_set( pb, SLAPI_SEARCH_RESULT_SET, NULL );
@@ -1208,6 +1208,7 @@ ldbm_back_next_search_entry_ext( Slapi_PBlock *pb, int use_extension
)
slapi_pblock_set( pb, SLAPI_SEARCH_RESULT_ENTRY, NULL );
delete_search_result_set( &sr );
rc = SLAPI_FAIL_GENERAL;
+ slapi_send_ldap_result( pb, LDAP_ADMINLIMIT_EXCEEDED, NULL, NULL, nentries,
urls );
goto bail;
}
@@ -1394,12 +1395,14 @@ ldbm_back_next_search_entry_ext( Slapi_PBlock *pb, int
use_extension )
else
{
cache_return ( &inst->inst_cache, &(sr->sr_entry) );
+ sr->sr_entry = NULL;
}
}
else
{
/* Failed the filter test, and this isn't a VLV Search */
cache_return( &inst->inst_cache, &(sr->sr_entry) );
+ sr->sr_entry = NULL;
if (LDAP_UNWILLING_TO_PERFORM == filter_test) {
/* Need to catch this error to detect the vattr loop */
slapi_send_ldap_result( pb, filter_test, NULL,
@@ -1459,6 +1462,7 @@ delete_search_result_set( back_search_result_set **sr )
{
idl_free( (*sr)->sr_candidates );
}
+ memset( *sr, 0, sizeof( back_search_result_set ) );
slapi_ch_free( (void**)sr );
}
diff --git a/ldap/servers/slapd/opshared.c b/ldap/servers/slapd/opshared.c
index d06dd2d..761d48a 100644
--- a/ldap/servers/slapd/opshared.c
+++ b/ldap/servers/slapd/opshared.c
@@ -221,6 +221,7 @@ op_shared_search (Slapi_PBlock *pb, int send_result)
Slapi_Backend *pr_be = NULL;
void *pr_search_result = NULL;
int pr_search_result_count = 0;
+ int pr_reset_processing = 0;
be_list[0] = NULL;
referral_list[0] = NULL;
@@ -371,6 +372,12 @@ op_shared_search (Slapi_PBlock *pb, int send_result)
rc = pagedresults_parse_control_value(ctl_value,
&pagesize, &curr_search_count);
if (LDAP_SUCCESS == rc) {
+ if (pagedresults_check_or_set_processing(pb->pb_conn)) {
+ send_ldap_result(pb, LDAP_UNWILLING_TO_PERFORM,
+ NULL, "Simple Paged Results Search already in
progress on this connection", 0, NULL);
+ goto free_and_return_nolock;
+ }
+ pr_reset_processing = 1; /* need to reset after we are done with this op
*/
operation->o_flags |= OP_FLAG_PAGED_RESULTS;
pr_be = pagedresults_get_current_be(pb->pb_conn);
pr_search_result = pagedresults_get_search_result(pb->pb_conn);
@@ -837,6 +844,9 @@ next_be:
slapi_pblock_set(pb, SLAPI_PLUGIN_OPRETURN, &rc);
index_subsys_filter_decoders_done(pb);
slapi_sdn_done(&sdn);
+ if (pr_reset_processing) {
+ pagedresults_reset_processing(pb->pb_conn);
+ }
}
/* Returns 1 if this processing on this entry is finished
diff --git a/ldap/servers/slapd/pagedresults.c b/ldap/servers/slapd/pagedresults.c
index e82053b..919dd4c 100644
--- a/ldap/servers/slapd/pagedresults.c
+++ b/ldap/servers/slapd/pagedresults.c
@@ -313,3 +313,40 @@ pagedresults_set_timelimit(Connection *conn, time_t timelimit)
return rc;
}
+/*
+ * check to see if this connection is currently processing
+ * a pagedresults search - if it is, return True - if not,
+ * mark that it is processing, and return False
+ */
+int
+pagedresults_check_or_set_processing(Connection *conn)
+{
+ int ret = 0;
+ if (conn) {
+ PR_Lock(conn->c_mutex);
+ ret = conn->c_flags&CONN_FLAG_PAGEDRESULTS_PROCESSING;
+ /* if ret is true, the following doesn't do anything */
+ conn->c_flags |= CONN_FLAG_PAGEDRESULTS_PROCESSING;
+ PR_Unlock(conn->c_mutex);
+ }
+ return ret;
+}
+
+/*
+ * mark the connection as being done with pagedresults
+ * processing - returns True if it was processing,
+ * False otherwise
+ */
+int
+pagedresults_reset_processing(Connection *conn)
+{
+ int ret = 0;
+ if (conn) {
+ PR_Lock(conn->c_mutex);
+ ret = conn->c_flags&CONN_FLAG_PAGEDRESULTS_PROCESSING;
+ /* if ret is false, the following doesn't do anything */
+ conn->c_flags &= ~CONN_FLAG_PAGEDRESULTS_PROCESSING;
+ PR_Unlock(conn->c_mutex);
+ }
+ return ret;
+}
diff --git a/ldap/servers/slapd/proto-slap.h b/ldap/servers/slapd/proto-slap.h
index 96b2ad3..f11565c 100644
--- a/ldap/servers/slapd/proto-slap.h
+++ b/ldap/servers/slapd/proto-slap.h
@@ -1349,6 +1349,8 @@ int pagedresults_set_with_sort(Connection *conn, int flags);
int pagedresults_get_sort_result_code(Connection *conn);
int pagedresults_set_sort_result_code(Connection *conn, int code);
int pagedresults_set_timelimit(Connection *conn, time_t timelimit);
+int pagedresults_check_or_set_processing(Connection *conn);
+int pagedresults_reset_processing(Connection *conn);
/*
* sort.c
diff --git a/ldap/servers/slapd/slap.h b/ldap/servers/slapd/slap.h
index 534b6eb..1ec7224 100644
--- a/ldap/servers/slapd/slap.h
+++ b/ldap/servers/slapd/slap.h
@@ -1342,6 +1342,13 @@ typedef struct conn {
#define CONN_FLAG_PAGEDRESULTS_WITH_SORT 64 /* paged results control is
* sent with server side sorting
*/
+
+#define CONN_FLAG_PAGEDRESULTS_UNINDEXED 128 /* If the search is unindexed,
+ * store the info in c_flags
+ */
+#define CONN_FLAG_PAGEDRESULTS_PROCESSING 256 /* there is an operation
+ * processing a pagedresults search
+ */
#define CONN_GET_SORT_RESULT_CODE (-1)
#define START_TLS_OID "1.3.6.1.4.1.1466.20037"
commit 13748d9e7606e19238b6e0d1cdaa561794d0a1de
Author: Nathan Kinder <nkinder(a)redhat.com>
Date: Thu Jan 27 12:10:01 2011 -0800
Bug 672468 - Don't use empty path elements in LD_LIBRARY_PATH
Many of the command line wrappers and perl scripts have their
LD_LIBRARY_PATH and SHLIB_PATH defined with macros that are
replaced by configure. It is common for some of these macros
to be empty, which results in empty path elements.
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/ldap/admin/src/scripts/start-dirsrv.in
b/ldap/admin/src/scripts/start-dirsrv.in
index d3788be..f910e90 100755
--- a/ldap/admin/src/scripts/start-dirsrv.in
+++ b/ldap/admin/src/scripts/start-dirsrv.in
@@ -6,6 +6,11 @@
# 1: Server could not be started
# 2: Server already running
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
# Starts a single instance
start_instance() {
# The first argument is the server ID. Anything
@@ -22,9 +27,15 @@ start_instance() {
fi
prefix="$DS_ROOT"
-
LD_LIBRARY_PATH=$prefix$SERVER_DIR:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@:@pcre_libdir@
+
+ libpath_add "$prefix$SERVER_DIR"
+ libpath_add "$prefix@nss_libdir@"
+ libpath_add "$prefix@libdir@"
+ libpath_add "@nss_libdir@"
+ libpath_add "$prefix@pcre_libdir@"
+
export LD_LIBRARY_PATH
-
SHLIB_PATH=$prefix$SERVER_DIR:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@:@pcre_libdir@
+ SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
DS_CONFIG_DIR=$CONFIG_DIR
diff --git a/ldap/admin/src/scripts/template-bak2db.in
b/ldap/admin/src/scripts/template-bak2db.in
index 12d46ca..093e156 100755
--- a/ldap/admin/src/scripts/template-bak2db.in
+++ b/ldap/admin/src/scripts/template-bak2db.in
@@ -4,10 +4,17 @@ prefix="{{DS-ROOT}}"
if [ "$prefix" = "/" ] ; then
prefix=""
fi
-LD_LIBRARY_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:$prefix@pcre_libdir@
-if [ -n "$prefix" ] ; then
- LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:@nss_libdir@"
-fi
+
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "$prefix{{SERVER-DIR}}"
+libpath_add "$prefix@nss_libdir@"
+libpath_add "$prefix@libdir@"
+libpath_add "$prefix@pcre_libdir@"
+
export LD_LIBRARY_PATH
SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
diff --git a/ldap/admin/src/scripts/template-bak2db.pl.in
b/ldap/admin/src/scripts/template-bak2db.pl.in
index 0d057e7..2656d6d 100644
--- a/ldap/admin/src/scripts/template-bak2db.pl.in
+++ b/ldap/admin/src/scripts/template-bak2db.pl.in
@@ -125,8 +125,25 @@ $entry =
"${dn}${misc}${cn}${nsinstance}${nsarchivedir}${nsdbtype}";
$vstr = "";
if ($verbose != 0) { $vstr = "-v"; }
$ENV{'PATH'} =
"$prefix@ldapsdk_bindir@:$prefix/usr/bin:@ldapsdk_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
-$ENV{'SHLIB_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
+
+libpath_add("$prefix@nss_libdir@");
+libpath_add("$prefix/usr/lib");
+libpath_add("@nss_libdir@");
+libpath_add("/usr/lib");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
open(FOO, "| ldapmodify $vstr -h {{SERVER-NAME}} -p {{SERVER-PORT}} -D
\"$rootdn\" -w \"$passwd\" -a" );
print(FOO "$entry");
close(FOO);
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-db2bak.in
b/ldap/admin/src/scripts/template-db2bak.in
index a0fe1f5..5b9fb04 100755
--- a/ldap/admin/src/scripts/template-db2bak.in
+++ b/ldap/admin/src/scripts/template-db2bak.in
@@ -4,10 +4,17 @@ prefix="{{DS-ROOT}}"
if [ "$prefix" = "/" ] ; then
prefix=""
fi
-LD_LIBRARY_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:$prefix@pcre_libdir@
-if [ -n "$prefix" ] ; then
- LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:@nss_libdir@"
-fi
+
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "$prefix{{SERVER-DIR}}"
+libpath_add "$prefix@nss_libdir@"
+libpath_add "$prefix@libdir@"
+libpath_add "$prefix@pcre_libdir@"
+
export LD_LIBRARY_PATH
SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
diff --git a/ldap/admin/src/scripts/template-db2bak.pl.in
b/ldap/admin/src/scripts/template-db2bak.pl.in
index fac526d..27c73b0 100644
--- a/ldap/admin/src/scripts/template-db2bak.pl.in
+++ b/ldap/admin/src/scripts/template-db2bak.pl.in
@@ -114,9 +114,26 @@ $entry = "${dn}${misc}${cn}${nsarchivedir}${nsdbtype}";
$vstr = "";
if ($verbose != 0) { $vstr = "-v"; }
$ENV{'PATH'} =
"$prefix@ldapsdk_bindir@:$prefix/usr/bin:@ldapsdk_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
-$ENV{'SHLIB_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
+
+libpath_add("$prefix@nss_libdir@");
+libpath_add("$prefix/usr/lib");
+libpath_add("@nss_libdir@");
+libpath_add("/usr/lib");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
print("Back up directory: $archivedir\n");
open(FOO, "| ldapmodify $vstr -h {{SERVER-NAME}} -p {{SERVER-PORT}} -D
\"$rootdn\" -w \"$passwd\" -a" );
print(FOO "$entry");
close(FOO);
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-db2index.in
b/ldap/admin/src/scripts/template-db2index.in
index e0e9a55..3dc4740 100755
--- a/ldap/admin/src/scripts/template-db2index.in
+++ b/ldap/admin/src/scripts/template-db2index.in
@@ -4,10 +4,16 @@ prefix="{{DS-ROOT}}"
if [ "$prefix" = "/" ] ; then
prefix=""
fi
-LD_LIBRARY_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:$prefix@pcre_libdir@
-if [ -n "$prefix" ] ; then
- LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:@nss_libdir@"
-fi
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "$prefix{{SERVER-DIR}}"
+libpath_add "$prefix@nss_libdir@"
+libpath_add "$prefix@libdir@"
+libpath_add "$prefix@pcre_libdir@"
+
export LD_LIBRARY_PATH
SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
diff --git a/ldap/admin/src/scripts/template-db2index.pl.in
b/ldap/admin/src/scripts/template-db2index.pl.in
index e993d88..431a48f 100644
--- a/ldap/admin/src/scripts/template-db2index.pl.in
+++ b/ldap/admin/src/scripts/template-db2index.pl.in
@@ -69,8 +69,13 @@ $verbose = 0;
$prefix = "{{DS-ROOT}}";
$ENV{'PATH'} =
"$prefix@ldapsdk_bindir@:$prefix/usr/bin:@ldapsdk_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
-$ENV{'SHLIB_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
+
+libpath_add("$prefix@nss_libdir@");
+libpath_add("$prefix/usr/lib");
+libpath_add("@nss_libdir@");
+libpath_add("/usr/lib");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
$i = 0;
while ($i <= $#ARGV)
@@ -224,3 +229,15 @@ $entry =
"${dn}${misc}${cn}${nsinstance}${attribute}${vlvattribute}";
open(FOO, "| ldapmodify $vstr -h {{SERVER-NAME}} -p {{SERVER-PORT}} -D
\"$rootdn\" -w \"$passwd\" -a" );
print(FOO "$entry");
close(FOO);
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-db2ldif.in
b/ldap/admin/src/scripts/template-db2ldif.in
index e519f3e..2989b77 100755
--- a/ldap/admin/src/scripts/template-db2ldif.in
+++ b/ldap/admin/src/scripts/template-db2ldif.in
@@ -4,10 +4,17 @@ prefix="{{DS-ROOT}}"
if [ "$prefix" = "/" ] ; then
prefix=""
fi
-LD_LIBRARY_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:$prefix@pcre_libdir@
-if [ -n "$prefix" ] ; then
- LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:@nss_libdir@"
-fi
+
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "$prefix{{SERVER-DIR}}"
+libpath_add "$prefix@nss_libdir@"
+libpath_add "$prefix@libdir@"
+libpath_add "$prefix@pcre_libdir@"
+
export LD_LIBRARY_PATH
SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
diff --git a/ldap/admin/src/scripts/template-db2ldif.pl.in
b/ldap/admin/src/scripts/template-db2ldif.pl.in
index af5f0d7..ff36000 100644
--- a/ldap/admin/src/scripts/template-db2ldif.pl.in
+++ b/ldap/admin/src/scripts/template-db2ldif.pl.in
@@ -258,9 +258,26 @@ $entry =
"${dn}${misc}${cn}${nsinstance}${nsincluded}${nsexcluded}${nsreplica}${
$vstr = "";
if ($verbose != 0) { $vstr = "-v"; }
$ENV{'PATH'} =
"$prefix@ldapsdk_bindir@:$prefix/usr/bin:@ldapsdk_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
-$ENV{'SHLIB_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
+
+libpath_add("$prefix@nss_libdir@");
+libpath_add("$prefix/usr/lib");
+libpath_add("@nss_libdir@");
+libpath_add("/usr/lib");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
print("Exporting to ldif file: ${ldiffile}\n");
open(FOO, "| ldapmodify $vstr -h {{SERVER-NAME}} -p {{SERVER-PORT}} -D
\"$rootdn\" -w \"$passwd\" -a" );
print(FOO "$entry");
close(FOO);
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-dbverify.in
b/ldap/admin/src/scripts/template-dbverify.in
index 0f71450..8c1a98e 100755
--- a/ldap/admin/src/scripts/template-dbverify.in
+++ b/ldap/admin/src/scripts/template-dbverify.in
@@ -4,10 +4,17 @@ prefix="{{DS-ROOT}}"
if [ "$prefix" = "/" ] ; then
prefix=""
fi
-LD_LIBRARY_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:$prefix@pcre_libdir@
-if [ -n "$prefix" ] ; then
- LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:@nss_libdir@"
-fi
+
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "$prefix{{SERVER-DIR}}"
+libpath_add "$prefix@nss_libdir@"
+libpath_add "$prefix@libdir@"
+libpath_add "$prefix@pcre_libdir@"
+
export LD_LIBRARY_PATH
SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
diff --git a/ldap/admin/src/scripts/template-fixup-linkedattrs.pl.in
b/ldap/admin/src/scripts/template-fixup-linkedattrs.pl.in
index 48a8926..3f295c5 100644
--- a/ldap/admin/src/scripts/template-fixup-linkedattrs.pl.in
+++ b/ldap/admin/src/scripts/template-fixup-linkedattrs.pl.in
@@ -61,8 +61,13 @@ $verbose = 0;
$prefix = "{{DS-ROOT}}";
$ENV{'PATH'} =
"$prefix@ldapsdk_bindir@:$prefix/usr/bin:@ldapsdk_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
-$ENV{'SHLIB_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
+
+libpath_add("$prefix@nss_libdir@");
+libpath_add("$prefix/usr/lib");
+libpath_add("@nss_libdir@");
+libpath_add("/usr/lib");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
$i = 0;
while ($i <= $#ARGV)
@@ -150,3 +155,15 @@ $entry = "${dn}${misc}${cn}${basedn}${linkdn}";
open(FOO, "| ldapmodify $vstr -h {{SERVER-NAME}} -p {{SERVER-PORT}} -D
\"$rootdn\" -w \"$passwd\" -a" );
print(FOO "$entry");
close(FOO);
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-fixup-memberof.pl.in
b/ldap/admin/src/scripts/template-fixup-memberof.pl.in
index 3f04d4a..925ab89 100644
--- a/ldap/admin/src/scripts/template-fixup-memberof.pl.in
+++ b/ldap/admin/src/scripts/template-fixup-memberof.pl.in
@@ -65,8 +65,13 @@ $verbose = 0;
$prefix = "{{DS-ROOT}}";
$ENV{'PATH'} =
"$prefix@ldapsdk_bindir@:$prefix/usr/bin:@ldapsdk_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
-$ENV{'SHLIB_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
+
+libpath_add("$prefix@nss_libdir@");
+libpath_add("$prefix/usr/lib");
+libpath_add("@nss_libdir@");
+libpath_add("/usr/lib");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
$i = 0;
while ($i <= $#ARGV)
@@ -161,3 +166,15 @@ $entry = "${dn}${misc}${cn}${basedn}${filter}";
open(FOO, "| ldapmodify $vstr -h {{SERVER-NAME}} -p {{SERVER-PORT}} -D
\"$rootdn\" -w \"$passwd\" -a" );
print(FOO "$entry");
close(FOO);
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-ldif2db.in
b/ldap/admin/src/scripts/template-ldif2db.in
index ce64193..8f92acf 100755
--- a/ldap/admin/src/scripts/template-ldif2db.in
+++ b/ldap/admin/src/scripts/template-ldif2db.in
@@ -4,10 +4,17 @@ prefix="{{DS-ROOT}}"
if [ "$prefix" = "/" ] ; then
prefix=""
fi
-LD_LIBRARY_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:$prefix@pcre_libdir@
-if [ -n "$prefix" ] ; then
- LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:@nss_libdir@"
-fi
+
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "$prefix{{SERVER-DIR}}"
+libpath_add "$prefix@nss_libdir@"
+libpath_add "$prefix@libdir@"
+libpath_add "$prefix@pcre_libdir@"
+
export LD_LIBRARY_PATH
SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
diff --git a/ldap/admin/src/scripts/template-ldif2db.pl.in
b/ldap/admin/src/scripts/template-ldif2db.pl.in
index 1d99123..33f02e1 100644
--- a/ldap/admin/src/scripts/template-ldif2db.pl.in
+++ b/ldap/admin/src/scripts/template-ldif2db.pl.in
@@ -217,8 +217,26 @@ $entry =
"${dn}${misc}${cn}${nsinstance}${nsincluded}${nsexcluded}${nsldiffiles}
$vstr = "";
if ($verbose != 0) { $vstr = "-v"; }
$ENV{'PATH'} =
"$prefix@ldapsdk_bindir@:$prefix/usr/bin:@ldapsdk_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
-$ENV{'SHLIB_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
+
+libpath_add("$prefix@nss_libdir@");
+libpath_add("$prefix/usr/lib");
+libpath_add("@nss_libdir@");
+libpath_add("/usr/lib");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
+
open(FOO, "| ldapmodify $vstr -h {{SERVER-NAME}} -p {{SERVER-PORT}} -D
\"$rootdn\" -w \"$passwd\" -a" );
print(FOO "$entry");
close(FOO);
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-ldif2ldap.in
b/ldap/admin/src/scripts/template-ldif2ldap.in
index 1a98e3a..7767c72 100755
--- a/ldap/admin/src/scripts/template-ldif2ldap.in
+++ b/ldap/admin/src/scripts/template-ldif2ldap.in
@@ -5,10 +5,20 @@ if [ "$prefix" = "/" ] ; then
prefix=""
fi
-PATH=$prefix@ldapsdk_bindir@:@ldapsdk_bindir@
-LD_LIBRARY_PATH=$prefix@ldapsdk_libdir@:@ldapsdk_libdir@:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "$prefix@ldapsdk_libdir@"
+libpath_add "@ldapsdk_libdir@"
+libpath_add "$prefix@nss_libdir@"
+libpath_add "$prefix@libdir@"
+libpath_add "@nss_libdir@"
+
export LD_LIBRARY_PATH
-SHLIB_PATH=$prefix@ldapsdk_libdir@:@ldapsdk_libdir@:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@
+SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
+PATH=$prefix@ldapsdk_bindir@:@ldapsdk_bindir@
ldapmodify -a -p {{SERVER-PORT}} -D "$1" -w "$2" -f $3
diff --git a/ldap/admin/src/scripts/template-monitor.in
b/ldap/admin/src/scripts/template-monitor.in
index e4683ae..29dae9e 100755
--- a/ldap/admin/src/scripts/template-monitor.in
+++ b/ldap/admin/src/scripts/template-monitor.in
@@ -1,11 +1,22 @@
#!/bin/sh
-PATH=$prefix@ldapsdk_bindir@:@ldapsdk_bindir@
-LD_LIBRARY_PATH=$prefix@ldapsdk_libdir@:@ldapsdk_libdir@:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "$prefix@ldapsdk_libdir@"
+libpath_add "@ldapsdk_libdir@"
+libpath_add "$prefix@nss_libdir@"
+libpath_add "$prefix@libdir@"
+libpath_add "@nss_libdir@"
+
export LD_LIBRARY_PATH
-SHLIB_PATH=$prefix@ldapsdk_libdir@:@ldapsdk_libdir@:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@
+SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
+PATH=$prefix@ldapsdk_bindir@:@ldapsdk_bindir@
+
if [ "x$1" != "x" ];
then MDN="$1";
else MDN="cn=monitor";
diff --git a/ldap/admin/src/scripts/template-ns-accountstatus.pl.in
b/ldap/admin/src/scripts/template-ns-accountstatus.pl.in
index 258a602..7c216d3 100644
--- a/ldap/admin/src/scripts/template-ns-accountstatus.pl.in
+++ b/ldap/admin/src/scripts/template-ns-accountstatus.pl.in
@@ -393,8 +393,13 @@ else
debug("Running ** $cmd ** $operation\n");
$ENV{'PATH'} =
"$prefix@ldapsdk_bindir@:$prefix/usr/bin:@ldapsdk_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
-$ENV{'SHLIB_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
+
+libpath_add("$prefix@nss_libdir@");
+libpath_add("$prefix/usr/lib");
+libpath_add("@nss_libdir@");
+libpath_add("/usr/lib");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
$ldapsearch="ldapsearch -1";
$ldapmodify="ldapmodify";
@@ -842,3 +847,15 @@ debug("$modrole, $entry\n");
out("$entry $state.\n");
exit 0;
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-ns-activate.pl.in
b/ldap/admin/src/scripts/template-ns-activate.pl.in
index 258a602..7c216d3 100644
--- a/ldap/admin/src/scripts/template-ns-activate.pl.in
+++ b/ldap/admin/src/scripts/template-ns-activate.pl.in
@@ -393,8 +393,13 @@ else
debug("Running ** $cmd ** $operation\n");
$ENV{'PATH'} =
"$prefix@ldapsdk_bindir@:$prefix/usr/bin:@ldapsdk_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
-$ENV{'SHLIB_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
+
+libpath_add("$prefix@nss_libdir@");
+libpath_add("$prefix/usr/lib");
+libpath_add("@nss_libdir@");
+libpath_add("/usr/lib");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
$ldapsearch="ldapsearch -1";
$ldapmodify="ldapmodify";
@@ -842,3 +847,15 @@ debug("$modrole, $entry\n");
out("$entry $state.\n");
exit 0;
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-ns-inactivate.pl.in
b/ldap/admin/src/scripts/template-ns-inactivate.pl.in
index 258a602..7c216d3 100644
--- a/ldap/admin/src/scripts/template-ns-inactivate.pl.in
+++ b/ldap/admin/src/scripts/template-ns-inactivate.pl.in
@@ -393,8 +393,13 @@ else
debug("Running ** $cmd ** $operation\n");
$ENV{'PATH'} =
"$prefix@ldapsdk_bindir@:$prefix/usr/bin:@ldapsdk_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
-$ENV{'SHLIB_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
+
+libpath_add("$prefix@nss_libdir@");
+libpath_add("$prefix/usr/lib");
+libpath_add("@nss_libdir@");
+libpath_add("/usr/lib");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
$ldapsearch="ldapsearch -1";
$ldapmodify="ldapmodify";
@@ -842,3 +847,15 @@ debug("$modrole, $entry\n");
out("$entry $state.\n");
exit 0;
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-ns-newpwpolicy.pl.in
b/ldap/admin/src/scripts/template-ns-newpwpolicy.pl.in
index fe09920..f55ae1a 100755
--- a/ldap/admin/src/scripts/template-ns-newpwpolicy.pl.in
+++ b/ldap/admin/src/scripts/template-ns-newpwpolicy.pl.in
@@ -47,8 +47,13 @@ use lib qw(@perlpath@);
$prefix = "{{DS-ROOT}}";
$ENV{'PATH'} =
"$prefix@ldapsdk_bindir@:$prefix/usr/bin:@ldapsdk_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
-$ENV{'SHLIB_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
+
+libpath_add("$prefix@nss_libdir@");
+libpath_add("$prefix/usr/lib");
+libpath_add("@nss_libdir@");
+libpath_add("/usr/lib");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
# Add new password policy specific entries
#############################################################################
@@ -283,3 +288,15 @@ sub usage {
}
} # end of $opt_U
}
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-restoreconfig.in
b/ldap/admin/src/scripts/template-restoreconfig.in
index 0e5de9b..480af88 100755
--- a/ldap/admin/src/scripts/template-restoreconfig.in
+++ b/ldap/admin/src/scripts/template-restoreconfig.in
@@ -1,9 +1,20 @@
#!/bin/sh
prefix="{{DS-ROOT}}"
-LD_LIBRARY_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@:$prefix@pcre_libdir@
+
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "$prefix{{SERVER-DIR}}"
+libpath_add "$prefix@nss_libdir@"
+libpath_add "$prefix@libdir@"
+libpath_add "@nss_libdir@"
+libpath_add "$prefix@pcre_libdir@"
+
export LD_LIBRARY_PATH
-SHLIB_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@:$prefix@pcre_libdir@
+SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
cd {{SERVERBIN-DIR}}
diff --git a/ldap/admin/src/scripts/template-saveconfig.in
b/ldap/admin/src/scripts/template-saveconfig.in
index 737c97b..4c8f3d6 100755
--- a/ldap/admin/src/scripts/template-saveconfig.in
+++ b/ldap/admin/src/scripts/template-saveconfig.in
@@ -1,9 +1,20 @@
#!/bin/sh
prefix="{{DS-ROOT}}"
-LD_LIBRARY_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@:$prefix@pcre_libdir@
+
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "$prefix{{SERVER-DIR}}"
+libpath_add "$prefix@nss_libdir@"
+libpath_add "$prefix@libdir@"
+libpath_add "@nss_libdir@"
+libpath_add "$prefix@pcre_libdir@"
+
export LD_LIBRARY_PATH
-SHLIB_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@:$prefix@pcre_libdir@
+SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
cd {{SERVERBIN-DIR}}
diff --git a/ldap/admin/src/scripts/template-schema-reload.pl.in
b/ldap/admin/src/scripts/template-schema-reload.pl.in
index d4a510f..0a9ff46 100644
--- a/ldap/admin/src/scripts/template-schema-reload.pl.in
+++ b/ldap/admin/src/scripts/template-schema-reload.pl.in
@@ -60,8 +60,13 @@ $verbose = 0;
$prefix = "{{DS-ROOT}}";
$ENV{'PATH'} =
"$prefix@ldapsdk_bindir@:$prefix/usr/bin:@ldapsdk_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
-$ENV{'SHLIB_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
+
+libpath_add("$prefix@nss_libdir@");
+libpath_add("$prefix/usr/lib");
+libpath_add("@nss_libdir@");
+libpath_add("/usr/lib");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
$i = 0;
while ($i <= $#ARGV)
@@ -150,3 +155,15 @@ $entry = "${dn}${misc}${cn}${basedn}${schemadir}";
open(FOO, "| ldapmodify $vstr -h {{SERVER-NAME}} -p {{SERVER-PORT}} -D
\"$rootdn\" -w \"$passwd\" -a" );
print(FOO "$entry");
close(FOO);
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-suffix2instance.in
b/ldap/admin/src/scripts/template-suffix2instance.in
index 994f8af..8186ef8 100755
--- a/ldap/admin/src/scripts/template-suffix2instance.in
+++ b/ldap/admin/src/scripts/template-suffix2instance.in
@@ -1,9 +1,20 @@
#!/bin/sh
prefix="{{DS-ROOT}}"
-LD_LIBRARY_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@:$prefix@pcre_libdir@
+
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "$prefix{{SERVER-DIR}}"
+libpath_add "$prefix@nss_libdir@"
+libpath_add "$prefix@libdir@"
+libpath_add "@nss_libdir@"
+libpath_add "$prefix@pcre_libdir@"
+
export LD_LIBRARY_PATH
-SHLIB_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@:$prefix@pcre_libdir@
+SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
cd {{SERVERBIN-DIR}}
diff --git a/ldap/admin/src/scripts/template-syntax-validate.pl.in
b/ldap/admin/src/scripts/template-syntax-validate.pl.in
index 4e4fa74..23f43f8 100644
--- a/ldap/admin/src/scripts/template-syntax-validate.pl.in
+++ b/ldap/admin/src/scripts/template-syntax-validate.pl.in
@@ -65,8 +65,13 @@ $verbose = 0;
$prefix = "{{DS-ROOT}}";
$ENV{'PATH'} =
"$prefix@ldapsdk_bindir@:$prefix/usr/bin:@ldapsdk_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
-$ENV{'SHLIB_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
+
+libpath_add("$prefix@nss_libdir@");
+libpath_add("$prefix/usr/lib");
+libpath_add("@nss_libdir@");
+libpath_add("/usr/lib");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
$i = 0;
while ($i <= $#ARGV)
@@ -161,3 +166,15 @@ $entry = "${dn}${misc}${cn}${basedn}${filter}";
open(FOO, "| ldapmodify $vstr -h {{SERVER-NAME}} -p {{SERVER-PORT}} -D
\"$rootdn\" -w \"$passwd\" -a" );
print(FOO "$entry");
close(FOO);
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-upgradedb.in
b/ldap/admin/src/scripts/template-upgradedb.in
index 9b6f03d..a36acc6 100755
--- a/ldap/admin/src/scripts/template-upgradedb.in
+++ b/ldap/admin/src/scripts/template-upgradedb.in
@@ -1,9 +1,20 @@
#!/bin/sh
prefix="{{DS-ROOT}}"
-LD_LIBRARY_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@:$prefix@pcre_libdir@
+
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "$prefix{{SERVER-DIR}}"
+libpath_add "$prefix@nss_libdir@"
+libpath_add "$prefix@libdir@"
+libpath_add "@nss_libdir@"
+libpath_add "$prefix@pcre_libdir@"
+
export LD_LIBRARY_PATH
-SHLIB_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@:$prefix@pcre_libdir@
+SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
cd {{SERVERBIN-DIR}}
diff --git a/ldap/admin/src/scripts/template-upgradednformat.in
b/ldap/admin/src/scripts/template-upgradednformat.in
index ea4f18a..d1ff5c8 100755
--- a/ldap/admin/src/scripts/template-upgradednformat.in
+++ b/ldap/admin/src/scripts/template-upgradednformat.in
@@ -11,10 +11,17 @@ prefix="{{DS-ROOT}}"
if [ "$prefix" = "/" ] ; then
prefix=""
fi
-LD_LIBRARY_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:$prefix@pcre_libdir@
-if [ -n "$prefix" ] ; then
- LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:@nss_libdir@"
-fi
+
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "$prefix{{SERVER-DIR}}"
+libpath_add "$prefix@nss_libdir@"
+libpath_add "$prefix@libdir@"
+libpath_add "$prefix@pcre_libdir@"
+
export LD_LIBRARY_PATH
SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
diff --git a/ldap/admin/src/scripts/template-usn-tombstone-cleanup.pl.in
b/ldap/admin/src/scripts/template-usn-tombstone-cleanup.pl.in
index bd8c257..274dc2f 100644
--- a/ldap/admin/src/scripts/template-usn-tombstone-cleanup.pl.in
+++ b/ldap/admin/src/scripts/template-usn-tombstone-cleanup.pl.in
@@ -64,8 +64,13 @@ $verbose = 0;
$prefix = "{{DS-ROOT}}";
$ENV{'PATH'} =
"$prefix@ldapsdk_bindir@:$prefix/usr/bin:@ldapsdk_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
-$ENV{'SHLIB_PATH'} =
"$prefix@nss_libdir@:$prefix/usr/lib:@nss_libdir@:/usr/lib";
+
+libpath_add("$prefix@nss_libdir@");
+libpath_add("$prefix/usr/lib");
+libpath_add("@nss_libdir@");
+libpath_add("/usr/lib");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
$i = 0;
while ($i <= $#ARGV)
@@ -178,3 +183,15 @@ $entry = "${dn}${misc}${cn}${basedn}${args}";
open(FOO, "| ldapmodify $vstr -h {{SERVER-NAME}} -p {{SERVER-PORT}} -D
\"$rootdn\" -w \"$passwd\" -a" );
print(FOO "$entry");
close(FOO);
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-verify-db.pl.in
b/ldap/admin/src/scripts/template-verify-db.pl.in
index 25bb46b..c352eb2 100644
--- a/ldap/admin/src/scripts/template-verify-db.pl.in
+++ b/ldap/admin/src/scripts/template-verify-db.pl.in
@@ -170,8 +170,11 @@ my $dbdirs = getDbDir($startpoint);
my $prefix = "{{DS-ROOT}}";
$ENV{'PATH'} =
"{{INST-DIR}}:$prefix@db_bindir@:$prefix/usr/bin:@db_bindir@:/usr/bin";
-$ENV{'LD_LIBRARY_PATH'} = "@db_libdir@:@libdir@";
-$ENV{'SHLIB_PATH'} = "@db_libdir@:@libdir@";
+
+libpath_add("@db_libdir@");
+libpath_add("@libdir@");
+
+$ENV{'SHLIB_PATH'} = "$ENV{'LD_LIBRARY_PATH'}";
# Check transaction logs by db_printlog
for (my $i = 0; "$$dbdirs[$i]" ne ""; $i++)
@@ -256,3 +259,15 @@ else
print "Good\n";
exit(0);
}
+
+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";
+ }
+ }
+}
diff --git a/ldap/admin/src/scripts/template-vlvindex.in
b/ldap/admin/src/scripts/template-vlvindex.in
index e6cd743..193667a 100755
--- a/ldap/admin/src/scripts/template-vlvindex.in
+++ b/ldap/admin/src/scripts/template-vlvindex.in
@@ -1,9 +1,20 @@
#!/bin/sh
prefix="{{DS-ROOT}}"
-LD_LIBRARY_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@:$prefix@pcre_libdir@
+
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "$prefix{{SERVER-DIR}}"
+libpath_add "$prefix@nss_libdir@"
+libpath_add "$prefix@libdir@"
+libpath_add "@nss_libdir@"
+libpath_add "$prefix@pcre_libdir@"
+
export LD_LIBRARY_PATH
-SHLIB_PATH=$prefix/{{SERVER-DIR}}:$prefix@nss_libdir@:$prefix@libdir@:@nss_libdir@:$prefix@pcre_libdir@
+SHLIB_PATH=$LD_LIBRARY_PATH
export SHLIB_PATH
cd {{SERVERBIN-DIR}}
diff --git a/wrappers/cl-dump.in b/wrappers/cl-dump.in
index 9a6301a..d42c6f2 100755
--- a/wrappers/cl-dump.in
+++ b/wrappers/cl-dump.in
@@ -43,8 +43,15 @@
# wrapper for cl-dump.pl
# set the library paths and call cl-dump.pl
-LD_LIBRARY_PATH=@nss_libdir@:/usr/lib
-SHLIB_PATH=@nss_libdir@:/usr/lib
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "@nss_libdir@"
+libpath_add "/usr/lib"
+
+SHLIB_PATH=$LD_LIBRARY_PATH
export LD_LIBRARY_PATH SHLIB_PATH
@bindir(a)/cl-dump.pl "$@"
diff --git a/wrappers/dbscan.in b/wrappers/dbscan.in
index 115a126..942ffc9 100755
--- a/wrappers/dbscan.in
+++ b/wrappers/dbscan.in
@@ -4,7 +4,6 @@
## (1) Specify variables used by this script. ##
###############################################################################
-LIB_DIR=@nspr_libdir@:@db_libdir@
BIN_DIR=@bindir@
COMMAND=dbscan-bin
@@ -14,7 +13,14 @@ COMMAND=dbscan-bin
## search order this command wrapper uses to find shared libraries. ##
###############################################################################
-LD_LIBRARY_PATH=${LIB_DIR}
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "@nspr_libdir@"
+libpath_add "@db_libdir@"
+
export LD_LIBRARY_PATH
diff --git a/wrappers/infadd.in b/wrappers/infadd.in
index 89eb0ea..3ebc40b 100755
--- a/wrappers/infadd.in
+++ b/wrappers/infadd.in
@@ -4,7 +4,6 @@
## (1) Specify variables used by this script. ##
###############################################################################
-LIB_DIR=@nss_libdir@:@nspr_libdir@:@ldapsdk_libdir@:@sasl_libdir@
BIN_DIR=@bindir@
COMMAND=infadd-bin
@@ -14,7 +13,16 @@ COMMAND=infadd-bin
## search order this command wrapper uses to find shared libraries. ##
###############################################################################
-LD_LIBRARY_PATH=${LIB_DIR}
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "@nss_libdir@"
+libpath_add "@nspr_libdir@"
+libpath_add "@ldapsdk_libdir@"
+libpath_add "@sasl_libdir@"
+
export LD_LIBRARY_PATH
diff --git a/wrappers/initscript.in b/wrappers/initscript.in
index e84ff9d..8be58db 100644
--- a/wrappers/initscript.in
+++ b/wrappers/initscript.in
@@ -54,6 +54,11 @@ success()
}
}
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
# On Solaris /var/run is in tmpfs and gets wiped out upon reboot
# we have to recreate the /var/run/@package_name@ directory
# We also have to make sure that the directory is writable
@@ -120,7 +125,10 @@ fi
start() {
if [ -n "$INSTANCES" ]; then
- LD_LIBRARY_PATH=@libdir@/@package_name@:@nss_libdir@:@pcre_libdir@
+ libpath_add "@libdir@/@package_name@"
+ libpath_add "@nss_libdir@"
+ libpath_add "@pcre_libdir@"
+
export LD_LIBRARY_PATH
echo "Starting $prog: "
# Start every slapd instance that isn't already running
diff --git a/wrappers/ldap-agent.in b/wrappers/ldap-agent.in
index 266507a..62c3d6e 100755
--- a/wrappers/ldap-agent.in
+++ b/wrappers/ldap-agent.in
@@ -4,7 +4,6 @@
## (1) Specify variables used by this script. ##
###############################################################################
-LIB_DIR=@nss_libdir@:@nspr_libdir@:@ldapsdk_libdir@:@netsnmp_libdir@
BIN_DIR=@sbindir@
COMMAND=ldap-agent-bin
@@ -17,7 +16,16 @@ export MIBS
## search order this command wrapper uses to find shared libraries. ##
###############################################################################
-LD_LIBRARY_PATH=${LIB_DIR}
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "@nss_libdir@"
+libpath_add "@nspr_libdir@"
+libpath_add "@ldapsdk_libdir@"
+libpath_add "@netsnmp_libdir@"
+
export LD_LIBRARY_PATH
diff --git a/wrappers/ldclt.in b/wrappers/ldclt.in
index 079e33c..7f0a3cc 100755
--- a/wrappers/ldclt.in
+++ b/wrappers/ldclt.in
@@ -4,7 +4,6 @@
## (1) Specify variables used by this script. ##
###############################################################################
-LIB_DIR=@nss_libdir@:@nspr_libdir@:@ldapsdk_libdir@:@sasl_libdir@
BIN_DIR=@bindir@
COMMAND=ldclt-bin
@@ -14,7 +13,16 @@ COMMAND=ldclt-bin
## search order this command wrapper uses to find shared libraries. ##
###############################################################################
-LD_LIBRARY_PATH=${LIB_DIR}
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "@nss_libdir@"
+libpath_add "@nspr_libdir@"
+libpath_add "@ldapsdk_libdir@"
+libpath_add "@sasl_libdir@"
+
export LD_LIBRARY_PATH
SASL_PATH=@sasl_path@
export SASL_PATH
diff --git a/wrappers/ldif.in b/wrappers/ldif.in
index 8fcaf17..5407920 100755
--- a/wrappers/ldif.in
+++ b/wrappers/ldif.in
@@ -4,7 +4,6 @@
## (1) Specify variables used by this script. ##
###############################################################################
-LIB_DIR=@nss_libdir@:@nspr_libdir@:@ldapsdk_libdir@:@sasl_libdir@
BIN_DIR=@bindir@
COMMAND=ldif-bin
@@ -14,7 +13,16 @@ COMMAND=ldif-bin
## search order this command wrapper uses to find shared libraries. ##
###############################################################################
-LD_LIBRARY_PATH=${LIB_DIR}
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "@nss_libdir@"
+libpath_add "@nspr_libdir@"
+libpath_add "@ldapsdk_libdir@"
+libpath_add "@sasl_libdir@"
+
export LD_LIBRARY_PATH
diff --git a/wrappers/migratecred.in b/wrappers/migratecred.in
index dd44800..49de8d7 100755
--- a/wrappers/migratecred.in
+++ b/wrappers/migratecred.in
@@ -4,7 +4,6 @@
## (1) Specify variables used by this script. ##
###############################################################################
-LIB_DIR=@serverdir@:@nss_libdir@:@nspr_libdir@:@ldapsdk_libdir@:@sasl_libdir@:@pcre_libdir@
BIN_DIR=@bindir@
COMMAND=migratecred-bin
@@ -14,7 +13,18 @@ COMMAND=migratecred-bin
## search order this command wrapper uses to find shared libraries. ##
###############################################################################
-LD_LIBRARY_PATH=${LIB_DIR}
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "@serverdir@"
+libpath_add "@nss_libdir@"
+libpath_add "@nspr_libdir@"
+libpath_add "@ldapsdk_libdir@"
+libpath_add "@sasl_libdir@"
+libpath_add "@pcre_libdir@"
+
export LD_LIBRARY_PATH
diff --git a/wrappers/mmldif.in b/wrappers/mmldif.in
index a11932e..aa09bae 100755
--- a/wrappers/mmldif.in
+++ b/wrappers/mmldif.in
@@ -4,7 +4,6 @@
## (1) Specify variables used by this script. ##
###############################################################################
-LIB_DIR=@serverdir@:@nss_libdir@:@nspr_libdir@:@ldapsdk_libdir@:@sasl_libdir@:@pcre_libdir@
BIN_DIR=@bindir@
COMMAND=mmldif-bin
@@ -14,7 +13,18 @@ COMMAND=mmldif-bin
## search order this command wrapper uses to find shared libraries. ##
###############################################################################
-LD_LIBRARY_PATH=${LIB_DIR}
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "@serverdir@"
+libpath_add "@nss_libdir@"
+libpath_add "@nspr_libdir@"
+libpath_add "@ldapsdk_libdir@"
+libpath_add "@sasl_libdir@"
+libpath_add "@pcre_libdir@"
+
export LD_LIBRARY_PATH
diff --git a/wrappers/pwdhash.in b/wrappers/pwdhash.in
index b3ef3fa..69618fa 100755
--- a/wrappers/pwdhash.in
+++ b/wrappers/pwdhash.in
@@ -4,7 +4,6 @@
## (1) Specify variables used by this script. ##
###############################################################################
-LIB_DIR=@serverdir@:@nss_libdir@:@nspr_libdir@:@ldapsdk_libdir@:@sasl_libdir@:@pcre_libdir@
BIN_DIR=@bindir@
COMMAND=pwdhash-bin
@@ -14,7 +13,18 @@ COMMAND=pwdhash-bin
## search order this command wrapper uses to find shared libraries. ##
###############################################################################
-LD_LIBRARY_PATH=${LIB_DIR}
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "@serverdir@"
+libpath_add "@nss_libdir@"
+libpath_add "@nspr_libdir@"
+libpath_add "@ldapsdk_libdir@"
+libpath_add "@sasl_libdir@"
+libpath_add "@pcre_libdir@"
+
export LD_LIBRARY_PATH
diff --git a/wrappers/repl-monitor.in b/wrappers/repl-monitor.in
index 116dbb5..cba72a1 100755
--- a/wrappers/repl-monitor.in
+++ b/wrappers/repl-monitor.in
@@ -43,8 +43,15 @@
# wrapper for repl-monitor.pl
# set the library paths and call repl-monitor.pl
-LD_LIBRARY_PATH=@nss_libdir@:/usr/lib
-SHLIB_PATH=@nss_libdir@:/usr/lib
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "@nss_libdir@"
+libpath_add "/usr/lib"
+
+SHLIB_PATH=$LD_LIBRARY_PATH
export LD_LIBRARY_PATH SHLIB_PATH
@bindir(a)/repl-monitor.pl "$@"
diff --git a/wrappers/rsearch.in b/wrappers/rsearch.in
index cebecf1..a78abd7 100755
--- a/wrappers/rsearch.in
+++ b/wrappers/rsearch.in
@@ -4,7 +4,6 @@
## (1) Specify variables used by this script. ##
###############################################################################
-LIB_DIR=@nss_libdir@:@nspr_libdir@:@ldapsdk_libdir@:@sasl_libdir@
BIN_DIR=@bindir@
COMMAND=rsearch-bin
@@ -14,7 +13,16 @@ COMMAND=rsearch-bin
## search order this command wrapper uses to find shared libraries. ##
###############################################################################
-LD_LIBRARY_PATH=${LIB_DIR}
+libpath_add() {
+ [ -z "$1" ] && return
+ LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}$1
+}
+
+libpath_add "@nss_libdir@"
+libpath_add "@nspr_libdir@"
+libpath_add "@ldapsdk_libdir@"
+libpath_add "@sasl_libdir@"
+
export LD_LIBRARY_PATH
commit 3e345888813c3cabaf99898155b7e2fed3ed3ed4
Author: Nathan Kinder <nkinder(a)redhat.com>
Date: Tue Jan 25 14:52:13 2011 -0800
Bug 671199 - Don't allow other to write to rundir
The persmissions on /var/run/dirsrv currently get set to 777 by
the setup program. There were some discrepencies with the way the
changeOwnerMode subroutine is used that cause 777 to be the mode
set when we intended for it to be 770. This patch fixes up the
way changeOwnerMode is used to sllow one to reset the group
ownership without altering the permissions for other.
In addition, this patch makes an upgrade remove any permissions that
are set for other on the rundir.
diff --git a/ldap/admin/src/scripts/10fixrundir.pl
b/ldap/admin/src/scripts/10fixrundir.pl
index a1e7524..b7a395c 100644
--- a/ldap/admin/src/scripts/10fixrundir.pl
+++ b/ldap/admin/src/scripts/10fixrundir.pl
@@ -6,6 +6,7 @@ sub runinst {
my ($inf, $inst, $dseldif, $conn) = @_;
my @errs;
+ my $mode;
# see if nsslapd-rundir is defined
my $ent = $conn->search("cn=config", "base",
"(objectclass=*)");
@@ -24,5 +25,15 @@ sub runinst {
}
}
+ # ensure that other doesn't have permissions on rundir
+ $mode = (stat($inf->{slapd}->{run_dir}))[2] or return
('error_chmoding_file', $inf->{slapd}->{run_dir}, $!);
+ # mask off permissions for other
+ $mode &= 07770;
+ $! = 0; # clear errno
+ chmod $mode, $inf->{slapd}->{run_dir};
+ if ($!) {
+ return ('error_chmoding_file', $inf->{slapd}->{run_dir}, $!);
+ }
+
return ();
}
diff --git a/ldap/admin/src/scripts/DSCreate.pm.in
b/ldap/admin/src/scripts/DSCreate.pm.in
index 86a8b0f..3262ec8 100644
--- a/ldap/admin/src/scripts/DSCreate.pm.in
+++ b/ldap/admin/src/scripts/DSCreate.pm.in
@@ -161,6 +161,7 @@ sub changeOwnerMode {
my $mode = shift;
my $it = shift;
my $gidonly = shift;
+ my $othermode = shift;
my $uid = getpwnam $inf->{General}->{SuiteSpotUserID};
my $gid = -1; # default to leave it alone
@@ -170,7 +171,8 @@ sub changeOwnerMode {
$gid = getgrnam $inf->{General}->{SuiteSpotGroup};
}
- $mode = getMode($inf, $mode, $gidonly);
+ $mode = getMode($inf, $mode, $othermode);
+
$! = 0; # clear errno
chmod $mode, $it;
if ($!) {
@@ -236,9 +238,8 @@ sub makeDSDirs {
debug(3, "Root user " . $inf->{General}->{SuiteSpotUserID} .
" already has access to $inf->{slapd}->{run_dir} - skipping\n");
} else {
my $dir = $inf->{slapd}->{run_dir};
- # rwx by user only, or by user & group if a group is defined
- @errs = changeOwnerMode($inf, 7, $dir, 7);
- debug(3, "Changed owner of $dir to " .
$inf->{General}->{SuiteSpotUserID} . ": error @errs\n");
+ # rwx by user only, or by user & group if a group is defined. Also only
change the group ownership.
+ @errs = changeOwnerMode($inf, 7, $dir, 1);
debug(3, "\t" . `/bin/ls -ld $dir`);
}
# set the group of the parent dir of config_dir and inst_dir
@@ -246,8 +247,8 @@ sub makeDSDirs {
for my $kw (qw(inst_dir config_dir)) {
my $dir = $inf->{slapd}->{$kw};
my $parent = dirname($dir);
- # changeOwnerMode(inf, mode, file, gidonly & default mode);
- @errs = changeOwnerMode($inf, 7, $parent, 5);
+ # changeOwnerMode(inf, mode, file, gidonly, othermode);
+ @errs = changeOwnerMode($inf, 7, $parent, 1, 5);
if (@errs) {
return @errs;
}