Author: jmcd
Date: 2006-03-13 00:35:33 +0000 (Mon, 13 Mar 2006)
New Revision: 14272

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

Log:
Fix Coverity # 81: free alloc'ed storage before returning

Modified:
   branches/SAMBA_3_0/source/utils/smbcacls.c
   trunk/source/utils/smbcacls.c


Changeset:
Modified: branches/SAMBA_3_0/source/utils/smbcacls.c
===================================================================
--- branches/SAMBA_3_0/source/utils/smbcacls.c  2006-03-13 00:30:23 UTC (rev 
14271)
+++ branches/SAMBA_3_0/source/utils/smbcacls.c  2006-03-13 00:35:33 UTC (rev 
14272)
@@ -378,7 +378,7 @@
 {
        const char *p = str;
        fstring tok;
-       SEC_DESC *ret;
+       SEC_DESC *ret = NULL;
        size_t sd_size;
        DOM_SID *grp_sid=NULL, *owner_sid=NULL;
        SEC_ACL *dacl=NULL;
@@ -396,7 +396,7 @@
                        if (!owner_sid ||
                            !StringToSid(owner_sid, tok+6)) {
                                printf("Failed to parse owner sid\n");
-                               return NULL;
+                               goto done;
                        }
                        continue;
                }
@@ -406,7 +406,7 @@
                        if (!grp_sid ||
                            !StringToSid(grp_sid, tok+6)) {
                                printf("Failed to parse group sid\n");
-                               return NULL;
+                               goto done;
                        }
                        continue;
                }
@@ -414,22 +414,23 @@
                if (strncmp(tok,"ACL:", 4) == 0) {
                        SEC_ACE ace;
                        if (!parse_ace(&ace, tok+4)) {
-                               return NULL;
+                               goto done;
                        }
                        if(!add_ace(&dacl, &ace)) {
                                printf("Failed to add ACL %s\n", tok);
-                               return NULL;
+                               goto done;
                        }
                        continue;
                }
 
                printf("Failed to parse token '%s' in security descriptor,\n", 
tok);
-               return NULL;
+               goto done;
        }
 
        ret = make_sec_desc(ctx,revision, SEC_DESC_SELF_RELATIVE, owner_sid, 
grp_sid, 
                            NULL, dacl, &sd_size);
 
+  done:
        SAFE_FREE(grp_sid);
        SAFE_FREE(owner_sid);
 

Modified: trunk/source/utils/smbcacls.c
===================================================================
--- trunk/source/utils/smbcacls.c       2006-03-13 00:30:23 UTC (rev 14271)
+++ trunk/source/utils/smbcacls.c       2006-03-13 00:35:33 UTC (rev 14272)
@@ -378,7 +378,7 @@
 {
        const char *p = str;
        fstring tok;
-       SEC_DESC *ret;
+       SEC_DESC *ret = NULL;
        size_t sd_size;
        DOM_SID *grp_sid=NULL, *owner_sid=NULL;
        SEC_ACL *dacl=NULL;
@@ -396,7 +396,7 @@
                        if (!owner_sid ||
                            !StringToSid(owner_sid, tok+6)) {
                                printf("Failed to parse owner sid\n");
-                               return NULL;
+                               goto done;
                        }
                        continue;
                }
@@ -406,7 +406,7 @@
                        if (!grp_sid ||
                            !StringToSid(grp_sid, tok+6)) {
                                printf("Failed to parse group sid\n");
-                               return NULL;
+                               goto done;
                        }
                        continue;
                }
@@ -414,22 +414,23 @@
                if (strncmp(tok,"ACL:", 4) == 0) {
                        SEC_ACE ace;
                        if (!parse_ace(&ace, tok+4)) {
-                               return NULL;
+                               goto done;
                        }
                        if(!add_ace(&dacl, &ace)) {
                                printf("Failed to add ACL %s\n", tok);
-                               return NULL;
+                               goto done;
                        }
                        continue;
                }
 
                printf("Failed to parse token '%s' in security descriptor,\n", 
tok);
-               return NULL;
+               goto done;
        }
 
        ret = make_sec_desc(ctx,revision, SEC_DESC_SELF_RELATIVE, owner_sid, 
grp_sid, 
                            NULL, dacl, &sd_size);
 
+  done:
        SAFE_FREE(grp_sid);
        SAFE_FREE(owner_sid);
 

Reply via email to