From e21e90039257b788051ee78c290ab9d71c528923 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Tue, 15 Jan 2002 08:27:19 +0000 Subject: [PATCH] Use LDAP_UTF8_CHARLEN2 to check shortest possible encoding --- libraries/liblunicode/ucstr.c | 2 +- servers/slapd/schema_init.c | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/libraries/liblunicode/ucstr.c b/libraries/liblunicode/ucstr.c index 1c0b0b8009..1a84938739 100644 --- a/libraries/liblunicode/ucstr.c +++ b/libraries/liblunicode/ucstr.c @@ -173,7 +173,7 @@ char * UTF8normalize( /* s[i] is non-ascii */ /* convert everything up to next ascii to ucs-4 */ while ( i < len ) { - clen = LDAP_UTF8_CHARLEN( s + i ); + clen = LDAP_UTF8_CHARLEN2( s + i, clen ); if ( clen == 0 ) { free( ucs ); free( out ); diff --git a/servers/slapd/schema_init.c b/servers/slapd/schema_init.c index bf1484603d..85992cfd0a 100644 --- a/servers/slapd/schema_init.c +++ b/servers/slapd/schema_init.c @@ -471,28 +471,28 @@ UTF8StringValidate( for( count = in->bv_len; count > 0; count-=len, u+=len ) { /* get the length indicated by the first byte */ - len = LDAP_UTF8_CHARLEN( u ); + len = LDAP_UTF8_CHARLEN2( u, len ); /* very basic checks */ switch( len ) { case 6: - if( u[5] >= 0xFE ) { + if( (u[5] & 0xC0) != 0x80 ) { return LDAP_INVALID_SYNTAX; } case 5: - if( u[4] >= 0xFE ) { + if( (u[4] & 0xC0) != 0x80 ) { return LDAP_INVALID_SYNTAX; } case 4: - if( u[3] >= 0xFE ) { + if( (u[3] & 0xC0) != 0x80 ) { return LDAP_INVALID_SYNTAX; } case 3: - if( u[2] >= 0xFE ) { + if( (u[2] & 0xC0 )!= 0x80 ) { return LDAP_INVALID_SYNTAX; } case 2: - if( u[1] >= 0xFE ) { + if( (u[1] & 0xC0) != 0x80 ) { return LDAP_INVALID_SYNTAX; } case 1: -- 2.39.5