Browse Source

Bug 639289 - Adding a new CN entry with UpperCase UTF-8 Character

https://bugzilla.redhat.com/show_bug.cgi?id=639289

Description:
There was a bug in the utf8 uppe2Lower table:
Character İ (LATIN CAPITAL LETTER I WITH DOT ABOVE) did not map
to the corresponding LATIN SMALL LETTER DOTLESS I (2 bytes) but
to ascii 'i' (1 byte).  The shortened DN tailed with a garbage
character and the entry was treated as an orphan entry which does
not belong to any suffix.

This patch fixes the mapping table mismatch as well as adds a code
to dn_ignore_case_to_end to force to NULL terminate the converted
string.
Noriko Hosoi 15 years ago
parent
commit
76c33394c2
2 changed files with 4 additions and 1 deletions
  1. 3 0
      ldap/servers/slapd/dn.c
  2. 1 1
      ldap/servers/slapd/utf8compare.c

+ 3 - 0
ldap/servers/slapd/dn.c

@@ -1250,6 +1250,9 @@ dn_ignore_case_to_end( char *dn, char *end )
          s += ssz, d += dsz) {
         slapi_utf8ToLower( s, d, &ssz, &dsz );
     }
+    if (d) {
+        *d = '\0'; /* utf8ToLower result may be shorter than the original */
+    }
     return( dn );
 }
 

+ 1 - 1
ldap/servers/slapd/utf8compare.c

@@ -133,7 +133,7 @@ UpperLowerTbl_t Upper2LowerTbl21[] = {
     {"\304\252", "\304\253", 2},
     {"\304\254", "\304\255", 2},
     {"\304\256", "\304\257", 2},
-    {"\304\260", "\151", 1},
+    {"\304\260", "\304\261", 2},
     {"\304\262", "\304\263", 2},
     {"\304\264", "\304\265", 2},
     {"\304\266", "\304\267", 2},