From 9e65c7a35c425d93b2459aea5d249692ffb1eed4 Mon Sep 17 00:00:00 2001 From: Rich Megginson Date: Feb 14 2012 15:57:04 +0000 Subject: Ticket #294 - 389 DS Segfaults during replica install in FreeIPA https://fedorahosted.org/389/ticket/294 Resolves: Ticket #294 Bug Description: 389 DS Segfaults during replica install in FreeIPA Reviewed by: mreynolds (Thanks!) Branch: master Fix Description: Have to check for NULL childnrdn return from slapi_rdn_get_prev_ext(). Platforms tested: RHEL6 x86_64 Flag Day: no Doc impact: no --- diff --git a/ldap/servers/slapd/back-ldbm/ldbm_entryrdn.c b/ldap/servers/slapd/back-ldbm/ldbm_entryrdn.c index d793705..a0aaa80 100644 --- a/ldap/servers/slapd/back-ldbm/ldbm_entryrdn.c +++ b/ldap/servers/slapd/back-ldbm/ldbm_entryrdn.c @@ -2314,9 +2314,10 @@ _entryrdn_insert_key(backend *be, goto bail; } else { int tmpidx = slapi_rdn_get_prev_ext(srdn, rdnidx, - &childnrdn, FLAG_ALL_NRDNS); - if (0 == strncasecmp(childnrdn, SLAPI_ATTR_UNIQUEID, - sizeof(SLAPI_ATTR_UNIQUEID) - 1)) { + &childnrdn, FLAG_ALL_NRDNS); + if (childnrdn && + (0 == strncasecmp(childnrdn, SLAPI_ATTR_UNIQUEID, + sizeof(SLAPI_ATTR_UNIQUEID) - 1))) { rdnidx = tmpidx; } } @@ -2824,9 +2825,10 @@ _entryrdn_index_read(backend *be, goto bail; } else { int tmpidx = slapi_rdn_get_prev_ext(srdn, rdnidx, - &childnrdn, FLAG_ALL_NRDNS); - if (0 == strncasecmp(childnrdn, SLAPI_ATTR_UNIQUEID, - sizeof(SLAPI_ATTR_UNIQUEID) - 1)) { + &childnrdn, FLAG_ALL_NRDNS); + if (childnrdn && + (0 == strncasecmp(childnrdn, SLAPI_ATTR_UNIQUEID, + sizeof(SLAPI_ATTR_UNIQUEID) - 1))) { rdnidx = tmpidx; } }