From 1db7356fa17cb3aeffcf4aff2149eaceaa5a62ea Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Mon, 28 Jun 2010 13:20:18 +0200 Subject: s3-net: Use talloc_asprintf and return if file is in wrong format. Found by clang-analyzer. --- source3/utils/net_rpc_printer.c | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) (limited to 'source3/utils/net_rpc_printer.c') diff --git a/source3/utils/net_rpc_printer.c b/source3/utils/net_rpc_printer.c index b75b195f4e..c398253616 100644 --- a/source3/utils/net_rpc_printer.c +++ b/source3/utils/net_rpc_printer.c @@ -490,12 +490,11 @@ static NTSTATUS net_copy_driverfile(struct net_context *c, struct cli_state *cli_share_dst, const char *file, const char *short_archi) { - NTSTATUS nt_status = NT_STATUS_UNSUCCESSFUL; const char *p; char *src_name; char *dst_name; - char *version; - char *filename; + char *version = NULL; + char *filename = NULL; char *tok; if (!file) { @@ -512,29 +511,27 @@ static NTSTATUS net_copy_driverfile(struct net_context *c, } } + if (version == NULL || filename == NULL) { + return NT_STATUS_UNSUCCESSFUL; + } + /* build source file name */ - if (asprintf(&src_name, "\\%s\\%s\\%s", short_archi, version, filename) < 0 ) + src_name = talloc_asprintf(mem_ctx, "\\%s\\%s\\%s", + short_archi, version, filename); + if (src_name == NULL) { return NT_STATUS_NO_MEMORY; - + } /* create destination file name */ - if (asprintf(&dst_name, "\\%s\\%s", short_archi, filename) < 0 ) - return NT_STATUS_NO_MEMORY; + dst_name = talloc_asprintf(mem_ctx, "\\%s\\%s", short_archi, filename); + if (dst_name == NULL) { + return NT_STATUS_NO_MEMORY; + } /* finally copy the file */ - nt_status = net_copy_file(c, mem_ctx, cli_share_src, cli_share_dst, - src_name, dst_name, false, false, false, true); - if (!NT_STATUS_IS_OK(nt_status)) - goto out; - - nt_status = NT_STATUS_OK; - -out: - SAFE_FREE(src_name); - SAFE_FREE(dst_name); - - return nt_status; + return net_copy_file(c, mem_ctx, cli_share_src, cli_share_dst, + src_name, dst_name, false, false, false, true); } /** -- cgit