mirror of
https://github.com/samba-team/samba.git
synced 2025-02-02 09:47:23 +03:00
source4/libcli: Only set ctemp set on success
If open fails ctemp.out.name probably won't be valid and strdup will cause a segv. Only set the path if open succeeds. Signed-off-by: Sam Lang <sam.lang@inktank.com> Reviewed-by: Volker Lendecke <Volker.Lendecke@SerNet.DE> Reviewed-by: Jeremy Allison <jra@samba.org> Autobuild-User(master): Jeremy Allison <jra@samba.org> Autobuild-Date(master): Wed Apr 24 23:58:44 CEST 2013 on sn-devel-104
This commit is contained in:
parent
301a1f9192
commit
727c611fe3
@ -653,9 +653,10 @@ int smbcli_ctemp(struct smbcli_tree *tree, const char *path, char **tmp_path)
|
||||
union smb_open open_parms;
|
||||
TALLOC_CTX *mem_ctx;
|
||||
NTSTATUS status;
|
||||
int ret = -1;
|
||||
|
||||
mem_ctx = talloc_init("raw_open");
|
||||
if (!mem_ctx) return -1;
|
||||
if (!mem_ctx) return ret;
|
||||
|
||||
open_parms.openx.level = RAW_OPEN_CTEMP;
|
||||
open_parms.ctemp.in.attrib = 0;
|
||||
@ -663,12 +664,12 @@ int smbcli_ctemp(struct smbcli_tree *tree, const char *path, char **tmp_path)
|
||||
open_parms.ctemp.in.write_time = 0;
|
||||
|
||||
status = smb_raw_open(tree, mem_ctx, &open_parms);
|
||||
if (tmp_path) {
|
||||
*tmp_path = strdup(open_parms.ctemp.out.name);
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
if (tmp_path) {
|
||||
*tmp_path = strdup(open_parms.ctemp.out.name);
|
||||
}
|
||||
ret = open_parms.ctemp.out.file.fnum;
|
||||
}
|
||||
talloc_free(mem_ctx);
|
||||
if (NT_STATUS_IS_OK(status)) {
|
||||
return open_parms.ctemp.out.file.fnum;
|
||||
}
|
||||
return -1;
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user