s3-rpcclient: properly check and initialize buffers in getdriverpackagepath
authorGünther Deschner <gd@samba.org>
Thu, 19 Dec 2019 12:49:53 +0000 (13:49 +0100)
committerJeremy Allison <jra@samba.org>
Wed, 8 Jan 2020 23:51:30 +0000 (23:51 +0000)
Guenther

Signed-off-by: Guenther Deschner <gd@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/rpcclient/cmd_spoolss.c

index 4500ec39f9e50351a5cc8ca593d4ff59a7a4ec97..dbcfd17dba22130c594d8c21e104505328d547ff 100644 (file)
@@ -1630,7 +1630,10 @@ static WERROR cmd_spoolss_getdriverpackagepath(struct rpc_pipe_client *cli,
        }
 
        offered = 1;
-       cab = talloc_array(mem_ctx, char, offered);
+       cab = talloc_zero_array(mem_ctx, char, offered);
+       if (cab == NULL) {
+               return WERR_NOT_ENOUGH_MEMORY;
+       }
        status = dcerpc_spoolss_GetPrinterDriverPackagePath(b, mem_ctx,
                                                            cli->srv_name_slash,
                                                            env,
@@ -1647,7 +1650,9 @@ static WERROR cmd_spoolss_getdriverpackagepath(struct rpc_pipe_client *cli,
        if (W_ERROR_EQUAL(W_ERROR(WIN32_FROM_HRESULT(hresult)), WERR_INSUFFICIENT_BUFFER)) {
                offered = needed;
                cab = talloc_zero_array(mem_ctx, char, offered);
-
+               if (cab == NULL) {
+                       return WERR_NOT_ENOUGH_MEMORY;
+               }
                status = dcerpc_spoolss_GetPrinterDriverPackagePath(b, mem_ctx,
                                                                    cli->srv_name_slash,
                                                                    env,