summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJim McDonough <jmcd@samba.org>2006-03-13 00:35:33 +0000
committerJim McDonough <jmcd@samba.org>2006-03-13 00:35:33 +0000
commit209d527df55ab4e6987a1d19dbee4fc0dc12f78b (patch)
tree78f944bbb0454d8a78e0f47ba132f8a2e134b31c
parent9223a7575f5233de2a23cbd3257a76484170df57 (diff)
downloadsamba-209d527df55ab4e6987a1d19dbee4fc0dc12f78b.tar.gz
samba-209d527df55ab4e6987a1d19dbee4fc0dc12f78b.tar.xz
samba-209d527df55ab4e6987a1d19dbee4fc0dc12f78b.zip
r14272: Fix Coverity # 81: free alloc'ed storage before returning
-rw-r--r--source/utils/smbcacls.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/source/utils/smbcacls.c b/source/utils/smbcacls.c
index cff3bc5dde4..8c08e7f2f14 100644
--- a/source/utils/smbcacls.c
+++ b/source/utils/smbcacls.c
@@ -378,7 +378,7 @@ static SEC_DESC *sec_desc_parse(char *str)
{
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 @@ static SEC_DESC *sec_desc_parse(char *str)
if (!owner_sid ||
!StringToSid(owner_sid, tok+6)) {
printf("Failed to parse owner sid\n");
- return NULL;
+ goto done;
}
continue;
}
@@ -406,7 +406,7 @@ static SEC_DESC *sec_desc_parse(char *str)
if (!grp_sid ||
!StringToSid(grp_sid, tok+6)) {
printf("Failed to parse group sid\n");
- return NULL;
+ goto done;
}
continue;
}
@@ -414,22 +414,23 @@ static SEC_DESC *sec_desc_parse(char *str)
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);