Fix UTF8stringvalidate loop termination (coverity)

This commit is contained in:
Howard Chu 2015-01-14 10:35:20 +00:00
parent 67c13d0ccf
commit 45146ba21a

View File

@ -1780,16 +1780,15 @@ UTF8StringValidate(
Syntax *syntax,
struct berval *in )
{
ber_len_t count;
int len;
unsigned char *u = (unsigned char *)in->bv_val;
unsigned char *u = (unsigned char *)in->bv_val, *end = in->bv_val + in->bv_len;
if( BER_BVISEMPTY( in ) && syntax == slap_schema.si_syn_directoryString ) {
/* directory strings cannot be empty */
return LDAP_INVALID_SYNTAX;
}
for( count = in->bv_len; count > 0; count -= len, u += len ) {
for( ; u < end; u += len ) {
/* get the length indicated by the first byte */
len = LDAP_UTF8_CHARLEN2( u, len );
@ -1827,7 +1826,7 @@ UTF8StringValidate(
if( LDAP_UTF8_OFFSET( (char *)u ) != len ) return LDAP_INVALID_SYNTAX;
}
if( count != 0 ) {
if( u >= len ) {
return LDAP_INVALID_SYNTAX;
}