Author: jra
Date: 2006-03-13 06:48:48 +0000 (Mon, 13 Mar 2006)
New Revision: 14300

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

Log:
Fix coverity #225. In a loop we were forgetting to free
resources on error exit path.
Jeremy.

Modified:
   trunk/source/rpc_server/srv_spoolss_nt.c


Changeset:
Modified: trunk/source/rpc_server/srv_spoolss_nt.c
===================================================================
--- trunk/source/rpc_server/srv_spoolss_nt.c    2006-03-13 06:48:41 UTC (rev 
14299)
+++ trunk/source/rpc_server/srv_spoolss_nt.c    2006-03-13 06:48:48 UTC (rev 
14300)
@@ -6871,8 +6871,8 @@
        int ndrivers;
        uint32 version;
        fstring *list = NULL;
+       DRIVER_INFO_3 *driver_info_3=NULL;
        NT_PRINTER_DRIVER_INFO_LEVEL driver;
-       DRIVER_INFO_3 *driver_info_3=NULL;
        WERROR result = WERR_OK;
 
        *returned=0;
@@ -6882,8 +6882,10 @@
                ndrivers=get_ntdrivers(&list, architecture, version);
                DEBUGADD(4,("we have:[%d] drivers in environment [%s] and 
version [%d]\n", ndrivers, architecture, version));
 
-               if(ndrivers == -1)
+               if(ndrivers == -1) {
+                       SAFE_FREE(driver_info_3);
                        return WERR_NOMEM;
+               }
 
                if(ndrivers != 0) {
                        if((driver_info_3=SMB_REALLOC_ARRAY(driver_info_3, 
DRIVER_INFO_3, *returned+ndrivers )) == NULL) {
@@ -6936,8 +6938,9 @@
        }
 
 out:
-       for (i=0; i<*returned; i++)
+       for (i=0; i<*returned; i++) {
                SAFE_FREE(driver_info_3[i].dependentfiles);
+       }
 
        SAFE_FREE(driver_info_3);
        

Reply via email to