]> git.sur5r.net Git - openldap/commitdiff
Fix UTF8stringvalidate loop termination (coverity)
authorHoward Chu <hyc@openldap.org>
Wed, 14 Jan 2015 10:35:20 +0000 (10:35 +0000)
committerHoward Chu <hyc@openldap.org>
Wed, 14 Jan 2015 10:35:20 +0000 (10:35 +0000)
servers/slapd/schema_init.c

index a80f99e3bca9ca08981fabfabd57a77f18e9a0e8..98d0c8a83a30042c3744cc717c65bc4e7738e3b9 100644 (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;
        }