From 1e7468f951428f77726878c2bd96bb08a2e4860e Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Thu, 20 Jan 2005 07:46:28 +0000 Subject: [PATCH] Import ITS#3495 fix from HEAD --- libraries/liblutil/passwd.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libraries/liblutil/passwd.c b/libraries/liblutil/passwd.c index f16b49a2bc..63fa8ed3f4 100644 --- a/libraries/liblutil/passwd.c +++ b/libraries/liblutil/passwd.c @@ -132,6 +132,7 @@ static LUTIL_PASSWD_HASH_FUNC hash_clear; #endif static struct pw_slist *pw_schemes; +static int pw_inited; static const struct pw_scheme pw_schemes_default[] = { @@ -173,6 +174,8 @@ int lutil_passwd_add( { struct pw_slist *ptr; + if (!pw_inited) lutil_passwd_init(); + ptr = ber_memalloc( sizeof( struct pw_slist )); if (!ptr) return -1; ptr->next = pw_schemes; @@ -187,6 +190,8 @@ void lutil_passwd_init() { struct pw_scheme *s; + pw_inited = 1; + for( s=(struct pw_scheme *)pw_schemes_default; s->name.bv_val; s++) { if ( lutil_passwd_add( &s->name, s->chk_fn, s->hash_fn ) ) break; } @@ -207,7 +212,7 @@ static const struct pw_scheme *get_scheme( { struct pw_slist *pws; - if (!pw_schemes) lutil_passwd_init(); + if (!pw_inited) lutil_passwd_init(); for( pws=pw_schemes; pws; pws=pws->next ) { if( strcasecmp(scheme, pws->s.name.bv_val ) == 0 ) { @@ -287,7 +292,7 @@ lutil_passwd( return -1; } - if (!pw_schemes) lutil_passwd_init(); + if (!pw_inited) lutil_passwd_init(); for( pws=pw_schemes; pws; pws=pws->next ) { if( pws->s.chk_fn ) { -- 2.39.5