From cc6d169a239d15db41cb0772dbba0ac5c55ba2a5 Mon Sep 17 00:00:00 2001 From: Arthur de Jong Date: Sun, 4 Feb 2007 22:31:10 +0000 Subject: fix list corruption bug in dict_put() and ignore setting value to NULL git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-ldapd@235 ef36b2f9-881f-0410-afb5-c4e39611909c --- nslcd/dict.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'nslcd') diff --git a/nslcd/dict.c b/nslcd/dict.c index 3ad7c02..84c30d7 100644 --- a/nslcd/dict.c +++ b/nslcd/dict.c @@ -90,6 +90,9 @@ DICT *dict_new(void) int dict_put(DICT *dict,const char *key,void *value) { struct dict_entry *entry; + /* ignore setting of value to NULL */ + if (value==NULL) + return 0; /* probably do dict_del(dict,key) */ entry=dict_entry_find(dict,key); if (entry==NULL) { @@ -97,12 +100,12 @@ int dict_put(DICT *dict,const char *key,void *value) entry=dict_entry_new(key); if (entry==NULL) return -1; + /* insert entry in list */ + entry->next=dict->head; + dict->head=entry; } /* set value */ entry->value=value; - /* insert entry in list */ - entry->next=dict->head; - dict->head=entry; return 0; } -- cgit v1.2.3