fix potential smbd crash when we fail to alloacte a policy handle for a printer open...
authorGerald Carter <jerry@samba.org>
Mon, 31 Mar 2003 17:43:45 +0000 (17:43 +0000)
committerGerald Carter <jerry@samba.org>
Mon, 31 Mar 2003 17:43:45 +0000 (17:43 +0000)
(This used to be commit 26478158bc03fdf019589ce68062100a39149b52)

source3/rpc_server/srv_spoolss_nt.c

index 0e81fa38d57f89a87f96c58886f80ea9c8eaf4d1..4dd4456b2cc784fb97e2c5c9b79fd113fd41c5ec 100644 (file)
@@ -519,18 +519,19 @@ static BOOL open_printer_hnd(pipes_struct *p, POLICY_HND *hnd, char *name, uint3
 
        ZERO_STRUCTP(new_printer);
        
-       if ( !(new_printer->ctx = talloc_init("Printer Entry [0x%x]", (uint32)hnd)) ) {
-               DEBUG(0,("open_printer_hnd: talloc_init() failed!\n"));
+       if (!create_policy_hnd(p, hnd, free_printer_entry, new_printer)) {
+               SAFE_FREE(new_printer);
                return False;
        }
        
-       new_printer->notify.option=NULL;
-                               
        /* Add to the internal list. */
        DLIST_ADD(printers_list, new_printer);
 
-       if (!create_policy_hnd(p, hnd, free_printer_entry, new_printer)) {
-               SAFE_FREE(new_printer);
+       new_printer->notify.option=NULL;
+                               
+       if ( !(new_printer->ctx = talloc_init("Printer Entry [0x%x]", (uint32)hnd)) ) {
+               DEBUG(0,("open_printer_hnd: talloc_init() failed!\n"));
+               close_printer_handle(p, hnd);
                return False;
        }