Author: jra
Date: 2006-06-20 19:06:50 +0000 (Tue, 20 Jun 2006)
New Revision: 16423

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16423

Log:
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.

Modified:
   trunk/source/printing/nt_printing.c
   trunk/source/registry/reg_printing.c


Changeset:
Modified: trunk/source/printing/nt_printing.c
===================================================================
--- trunk/source/printing/nt_printing.c 2006-06-20 18:30:24 UTC (rev 16422)
+++ trunk/source/printing/nt_printing.c 2006-06-20 19:06:50 UTC (rev 16423)
@@ -2770,6 +2770,8 @@
        fstring *subkeys_ptr = NULL;
        fstring subkeyname;
        
+       *subkeys = NULL;
+
        if ( !data )
                return 0;
 

Modified: trunk/source/registry/reg_printing.c
===================================================================
--- trunk/source/registry/reg_printing.c        2006-06-20 18:30:24 UTC (rev 
16422)
+++ trunk/source/registry/reg_printing.c        2006-06-20 19:06:50 UTC (rev 
16423)
@@ -346,8 +346,10 @@
                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 @@
        if ( printer )
                free_a_printer( &printer, 2 );
 
+       SAFE_FREE( existing_subkeys );
+
        return True;
 }
 

Reply via email to