(merge from HEAD) Valgrind found some memory leaks!
authorAndrew Bartlett <abartlet@samba.org>
Sat, 22 Mar 2003 23:32:50 +0000 (23:32 +0000)
committerAndrew Bartlett <abartlet@samba.org>
Sat, 22 Mar 2003 23:32:50 +0000 (23:32 +0000)
(This used to be commit 8315b9c3119dde62aeb72ad5e20f63aee89abd0b)

source3/lib/gencache.c
source3/libsmb/namecache.c
source3/param/loadparm.c

index 6a66ce95b99aedc30acd19e66def625bfab95a95..baec0e3b3764ef154c31c645aac792f515beda8b 100644 (file)
@@ -114,6 +114,9 @@ BOOL gencache_set(const char *keystr, const char *value, time_t timeout)
        if (!gencache_init()) return False;
        
        asprintf(&valstr, CACHE_DATA_FMT, (int)timeout, value);
+       if (!valstr)
+               return False;
+
        keybuf.dptr = strdup(keystr);
        keybuf.dsize = strlen(keystr)+1;
        databuf.dptr = strdup(valstr);
@@ -241,6 +244,7 @@ BOOL gencache_get(const char *keystr, char **valstr, time_t *timeout)
        keybuf.dptr = strdup(keystr);
        keybuf.dsize = strlen(keystr)+1;
        databuf = tdb_fetch(cache, keybuf);
+       SAFE_FREE(keybuf.dptr);
        
        if (databuf.dptr && databuf.dsize > TIMEOUT_LEN) {
                char* entry_buf = strndup(databuf.dptr, databuf.dsize);
index 40777011a1d07ac64fd81e06df7d73f28cc50243..d3541b7719d9a991ea030c89406f0415936d96e6 100644 (file)
@@ -118,6 +118,7 @@ BOOL namecache_store(const char *name, int name_type,
        time_t expiry;
        char *key, *value_string;
        int i;
+       BOOL ret;
 
        /*
         * we use gecache call to avoid annoying debug messages about
@@ -152,10 +153,17 @@ BOOL namecache_store(const char *name, int name_type,
         * First, store the number of ip addresses and then
         * place each single ip
         */
-       ipstr_list_make(&value_string, ip_list, num_names);
+       if (!ipstr_list_make(&value_string, ip_list, num_names)) {
+               SAFE_FREE(key);
+               SAFE_FREE(value_string);
+               return False;
+       }
        
        /* set the entry */
-       return (gencache_set(key, value_string, expiry));
+       ret = gencache_set(key, value_string, expiry);
+       SAFE_FREE(key);
+       SAFE_FREE(value_string);
+       return ret;
 }
 
 
index 85f92e81ffe2cc1e92f66c18b08dad666f1b14c2..cb03d26e61dfde90bbbc16fe0c616cd94b55fa10 100644 (file)
@@ -2954,6 +2954,7 @@ BOOL lp_do_parameter(int snum, const char *pszParmName, const char *pszParmValue
                        break;
 
                case P_LIST:
+                       str_list_free(parm_ptr);
                        *(char ***)parm_ptr = str_list_make(pszParmValue, NULL);
                        break;