mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-26 01:29:59 -05:00
A very basic UTF-8 check
This commit is contained in:
parent
19f3ba216f
commit
5a378a5ce8
1 changed files with 30 additions and 2 deletions
|
|
@ -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 */
|
||||
|
|
|
|||
Loading…
Reference in a new issue