From: Kurt Zeilenga Date: Tue, 15 Jan 2002 04:38:05 +0000 (+0000) Subject: A very basic UTF-8 check X-Git-Tag: LDBM_PRE_GIANT_RWLOCK~127 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=5a378a5ce8301fe61ea02172c59f5fcde53f180d;p=openldap A very basic UTF-8 check --- diff --git a/servers/slapd/schema_init.c b/servers/slapd/schema_init.c index f9bf4b3349..bf1484603d 100644 --- a/servers/slapd/schema_init.c +++ b/servers/slapd/schema_init.c @@ -473,8 +473,36 @@ UTF8StringValidate( /* get the length indicated by the first byte */ len = LDAP_UTF8_CHARLEN( u ); - /* should not be zero */ - if( len == 0 ) return LDAP_INVALID_SYNTAX; + /* very basic checks */ + switch( len ) { + case 6: + if( u[5] >= 0xFE ) { + return LDAP_INVALID_SYNTAX; + } + case 5: + if( u[4] >= 0xFE ) { + return LDAP_INVALID_SYNTAX; + } + case 4: + if( u[3] >= 0xFE ) { + return LDAP_INVALID_SYNTAX; + } + case 3: + if( u[2] >= 0xFE ) { + return LDAP_INVALID_SYNTAX; + } + case 2: + if( u[1] >= 0xFE ) { + return LDAP_INVALID_SYNTAX; + } + case 1: + if( u[0] >= 0xFE ) { + return LDAP_INVALID_SYNTAX; + } + break; + default: + return LDAP_INVALID_SYNTAX; + } /* make sure len corresponds with the offset to the next character */