Author: rmeggins
Update of /cvs/dirsec/ldapserver/ldap/admin/src
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv25228/ldapserver/ldap/admin/src
Modified Files:
create_instance.c
Log Message:
Resolves: bug 229825
Bug Description: aci with bogus uid= dn created by ds_newinst
Reviewed by: nhosoi (Thanks!)
Fix Description: Unknown to me until just now, PL_strdup(NULL) will return "" -
the empty string. The code in config_suitespot() expects that empty or unused fields are
NULL. The solution is to create a create_instance_strdup() wrapper around PL_strdup() and
use that in cases where the argument may be NULL. I checked create_instance.c. Every
other place where PL_strdup is used, the argument is checked for NULL first. So these are
the only places affected. Instance creation works fine after this change and does not
create the offending aci.
Platforms tested: RHEL4
Flag Day: no
Doc impact: no
Index: create_instance.c
===================================================================
RCS file: /cvs/dirsec/ldapserver/ldap/admin/src/create_instance.c,v
retrieving revision 1.46
retrieving revision 1.47
diff -u -r1.46 -r1.47
--- create_instance.c 23 Feb 2007 04:10:50 -0000 1.46
+++ create_instance.c 23 Feb 2007 18:40:27 -0000 1.47
@@ -338,6 +338,7 @@
char *create_instance_concatenate(char *, char *, int);
int create_instance_mkdir(char *, int);
char *create_instance_mkdir_p(char *, char *, int, struct passwd *);
+static char *create_instance_strdup(const char *);
#if defined( SOLARIS )
/*
@@ -1311,6 +1312,16 @@
return 1;
}
+static char *create_instance_strdup(const char *s)
+{
+ char *result = NULL;
+ if (s) {
+ result = PL_strdup(s);
+ }
+
+ return result;
+}
+
#if defined( SOLARIS )
/*
* Solaris 9+ specific installation
@@ -4063,23 +4074,23 @@
memset( &query_vars, 0, sizeof(query_vars) );
if (!cf->use_existing_user_ds)
- query_vars.suffix = PL_strdup( cf->suffix );
- query_vars.ssAdmID = PL_strdup( cf->cfg_sspt_uid );
- query_vars.ssAdmPW1 = PL_strdup( cf->cfg_sspt_uidpw );
- query_vars.ssAdmPW2 = PL_strdup( cf->cfg_sspt_uidpw );
- query_vars.rootDN = PL_strdup( cf->rootdn );
- query_vars.rootPW = PL_strdup( cf->rootpw );
- query_vars.admin_domain = PL_strdup( cf->admin_domain );
- query_vars.netscaperoot = PL_strdup( cf->netscaperoot );
- query_vars.testconfig = PL_strdup( cf->testconfig );
- query_vars.consumerDN = PL_strdup(cf->consumerdn);
- query_vars.consumerPW = PL_strdup(cf->consumerhashedpw);
+ query_vars.suffix = create_instance_strdup( cf->suffix );
+ query_vars.ssAdmID = create_instance_strdup( cf->cfg_sspt_uid );
+ query_vars.ssAdmPW1 = create_instance_strdup( cf->cfg_sspt_uidpw );
+ query_vars.ssAdmPW2 = create_instance_strdup( cf->cfg_sspt_uidpw );
+ query_vars.rootDN = create_instance_strdup( cf->rootdn );
+ query_vars.rootPW = create_instance_strdup( cf->rootpw );
+ query_vars.admin_domain = create_instance_strdup( cf->admin_domain );
+ query_vars.netscaperoot = create_instance_strdup( cf->netscaperoot );
+ query_vars.testconfig = create_instance_strdup( cf->testconfig );
+ query_vars.consumerDN = create_instance_strdup(cf->consumerdn);
+ query_vars.consumerPW = create_instance_strdup(cf->consumerhashedpw);
if (cf->cfg_sspt && !strcmp(cf->cfg_sspt, "1"))
query_vars.cfg_sspt = 1;
else
query_vars.cfg_sspt = 0;
- query_vars.config_admin_uid = PL_strdup(cf->cfg_sspt_uid);
+ query_vars.config_admin_uid = create_instance_strdup(cf->cfg_sspt_uid);
memset(&slapd_conf, 0, sizeof(SLAPD_CONFIG));
if (sroot)
Show replies by date