From: Howard Chu Date: Fri, 8 Jul 2005 05:46:08 +0000 (+0000) Subject: Fix get_scheme to check length of scheme name X-Git-Tag: OPENLDAP_AC_BP~433 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=4b07f915113f77c6b7d0fee49d06e4c22e186c01;p=openldap Fix get_scheme to check length of scheme name --- diff --git a/libraries/liblutil/passwd.c b/libraries/liblutil/passwd.c index 5460b0376a..7512dff6d0 100644 --- a/libraries/liblutil/passwd.c +++ b/libraries/liblutil/passwd.c @@ -197,11 +197,21 @@ static const struct pw_scheme *get_scheme( const char* scheme ) { struct pw_slist *pws; + struct berval bv; if (!pw_inited) lutil_passwd_init(); + bv.bv_val = strchr( scheme, '}' ); + if ( !bv.bv_val ) + return NULL; + + bv.bv_len = bv.bv_val - scheme + 1; + bv.bv_val = scheme; + for( pws=pw_schemes; pws; pws=pws->next ) { - if( strcasecmp(scheme, pws->s.name.bv_val ) == 0 ) { + if( bv.bv_len != pws->s.name.bv_len ) + continue; + if( strncasecmp(bv.bv_val, pws->s.name.bv_val, bv.bv_len ) == 0 ) { return &(pws->s); } }