From f014291edda9449c73757063fc306d564445cc18 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 20 Jun 2006 19:06:57 +0000 Subject: r16424: Fix possible null deref and a memory leak found by examining Klockwork #1519. get_printer_subkeys() could return zero without initializing it's return pointer arg. Fixed this. Added free of subkey pointer return in registry/reg_printing.c (interesting that neithe Coverity or Klocwork found this one). Jeremy. (This used to be commit 4fbeae1a3ac3499e5d9f566655cbafccd9d691cb) --- source3/registry/reg_printing.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'source3/registry') diff --git a/source3/registry/reg_printing.c b/source3/registry/reg_printing.c index f001fdad24..a712a7c970 100644 --- a/source3/registry/reg_printing.c +++ b/source3/registry/reg_printing.c @@ -346,8 +346,10 @@ static BOOL key_printers_store_keys( const char *key, REGSUBKEY_CTR *subkeys ) if ( lookup_printerkey(printer->info_2->data, subkeyname) == -1 ) { DEBUG(5,("key_printers_store_keys: adding key %s\n", existing_subkeys[i])); - if ( add_new_printer_key( printer->info_2->data, subkeyname ) == -1 ) + if ( add_new_printer_key( printer->info_2->data, subkeyname ) == -1 ) { + SAFE_FREE( existing_subkeys ); return False; + } } } @@ -360,6 +362,8 @@ static BOOL key_printers_store_keys( const char *key, REGSUBKEY_CTR *subkeys ) if ( printer ) free_a_printer( &printer, 2 ); + SAFE_FREE( existing_subkeys ); + return True; } -- cgit