From 5a378a5ce8301fe61ea02172c59f5fcde53f180d Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Tue, 15 Jan 2002 04:38:05 +0000 Subject: [PATCH] A very basic UTF-8 check --- servers/slapd/schema_init.c | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) 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 */ -- 2.39.5