Fix two memory leaks. tdb_search_keys allocates space for the key
authorVolker Lendecke <vlendec@samba.org>
Tue, 1 Jul 2003 12:40:52 +0000 (12:40 +0000)
committerVolker Lendecke <vlendec@samba.org>
Tue, 1 Jul 2003 12:40:52 +0000 (12:40 +0000)
strings.

Running 'net cache list' or secrets_get_trusted_domains through
valgrind gives a *huge* amount of invalid reads of one byte beyond the
indicated string length in libc's strncpy. Annoying...

Volker
(This used to be commit 0f8933ae778064ff58cdc832ce52c843631435bb)

source3/lib/gencache.c
source3/passdb/secrets.c

index f3740e3e12789b2a3e89b831c43b55936f765914..b94e35eff4dd45266049630fdbb854664be7aa17 100644 (file)
@@ -329,6 +329,7 @@ void gencache_iterate(void (*fn)(const char* key, const char *value, time_t time
                if (!databuf.dptr || databuf.dsize <= TIMEOUT_LEN) {
                        SAFE_FREE(databuf.dptr);
                        SAFE_FREE(keystr);
+                       SAFE_FREE(node->node_key.dptr);
                        node = node->next;
                        continue;
                }
@@ -344,6 +345,7 @@ void gencache_iterate(void (*fn)(const char* key, const char *value, time_t time
                SAFE_FREE(valstr);
                SAFE_FREE(entry);
                SAFE_FREE(keystr);
+               SAFE_FREE(node->node_key.dptr);
                node = node->next;
        }
        
index f91d59989f2be0d43faeb3b0cc8f3956a6de278d..57a539b09290f85bf0863e86c6d5ddac5847f63e 100644 (file)
@@ -615,6 +615,8 @@ NTSTATUS secrets_get_trusted_domains(TALLOC_CTX* ctx, int* enum_ctx, unsigned in
                        DEBUG(0, ("strndup failed!\n"));
                        return NT_STATUS_NO_MEMORY;
                }
+
+               SAFE_FREE(k->node_key.dptr);
                                
                packed_pass = secrets_fetch(secrets_key, &size);
                packed_size = tdb_trusted_dom_pass_unpack(packed_pass, size, pass);