From 1675ffa44180b53e70381e6d10b09a5c4e438780 Mon Sep 17 00:00:00 2001 From: Mark Reynolds Date: Wed, 11 Nov 2020 08:59:18 -0500 Subject: [PATCH 2/2] Issue 4383 - Do not normalize escaped spaces in a DN Bug Description: Adding an entry with an escaped leading space leads to many problems. Mainly id2entry can get corrupted during an import of such an entry, and the entryrdn index is not updated correctly Fix Description: In slapi_dn_normalize_ext() leave an escaped space intact. Relates: https://github.com/389ds/389-ds-base/issues/4383 Reviewed by: firstyear, progier, and tbordaz (Thanks!!!) --- ldap/servers/slapd/dn.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ldap/servers/slapd/dn.c b/ldap/servers/slapd/dn.c index 152561d33..965877850 100644 --- a/ldap/servers/slapd/dn.c +++ b/ldap/servers/slapd/dn.c @@ -895,8 +895,7 @@ slapi_dn_normalize_ext(char *src, size_t src_len, char **dest, size_t *dest_len) s++; } } - } else if (s + 2 < ends && - isxdigit(*(s + 1)) && isxdigit(*(s + 2))) { + } else if (s + 2 < ends && isxdigit(*(s + 1)) && isxdigit(*(s + 2))) { /* esc hexpair ==> real character */ int n = slapi_hexchar2int(*(s + 1)); int n2 = slapi_hexchar2int(*(s + 2)); @@ -904,6 +903,11 @@ slapi_dn_normalize_ext(char *src, size_t src_len, char **dest, size_t *dest_len) if (n == 0) { /* don't change \00 */ *d++ = *++s; *d++ = *++s; + } else if (n == 32) { /* leave \20 (space) intact */ + *d++ = *s; + *d++ = *++s; + *d++ = *++s; + s++; } else { *d++ = n; s += 3; -- 2.26.2