diff --git a/libraries/libldap/url.c b/libraries/libldap/url.c index 0ac1b6f63b..77171a51df 100644 --- a/libraries/libldap/url.c +++ b/libraries/libldap/url.c @@ -989,12 +989,14 @@ ldap_pvt_hex_unescape( char *s ) for ( p = s; *s != '\0'; ++s ) { if ( *s == '%' ) { - if ( *++s != '\0' ) { - *p = ldap_pvt_unhex( *s ) << 4; + if ( *++s == '\0' ) { + break; } - if ( *++s != '\0' ) { - *p++ += ldap_pvt_unhex( *s ); + *p = ldap_pvt_unhex( *s ) << 4; + if ( *++s == '\0' ) { + break; } + *p++ += ldap_pvt_unhex( *s ); } else { *p++ = *s; }