avoid passing NULL to asprintf(3) when there's no parent dn entry,
this happens when adding a new naming context and then putting the first
rdn in.
Jun 24 23:51:23 x250 ldapd: vfprintf %s NULL in "@%.*s,%.*s"
Jun 25 00:13:14 x250 ldapd: vfprintf %s NULL in "@%.*s,%.*s"
? ldapd.diff
Index: index.c
===================================================================
RCS file: /cvs/src/usr.sbin/ldapd/index.c,v
retrieving revision 1.11
diff -u -p -r1.11 index.c
--- index.c 20 Jan 2017 11:55:08 -0000 1.11
+++ index.c 24 Jun 2018 22:06:04 -0000
@@ -144,9 +144,14 @@ index_rdn_key(struct namespace *ns, stru
++parent_dn;
}
- if (asprintf(&t, "@%.*s,%.*s", pdnsz, parent_dn, rdnsz,
- (char *)dn->data) == -1)
- return -1;
+ if (!pdnsz) {
+ if (asprintf(&t, "@,%.*s", rdnsz, (char *)dn->data) == -1)
+ return -1;
+ } else {
+ if (asprintf(&t, "@%.*s,%.*s", pdnsz, parent_dn, rdnsz,
+ (char *)dn->data) == -1)
+ return -1;
+ }
normalize_dn(t);
key->data = t;