s3-spoolss: fixes for _spoolss_EnumPrinterKey client and server.
authorGünther Deschner <gd@samba.org>
Tue, 24 Nov 2009 14:22:04 +0000 (15:22 +0100)
committerKarolin Seeger <kseeger@samba.org>
Mon, 30 Nov 2009 15:09:38 +0000 (16:09 +0100)
Thanks Metze for review!

Guenther
(cherry picked from commit 846aa18648f3b34ab5cbc4dc4ba334bbedeab2f4)

source3/rpc_client/cli_spoolss.c
source3/rpc_server/srv_spoolss_nt.c

index ff8736df9f61ad21edd1b05cf3789efab1723c27..5522ca75f3d992e6e3f777ea6271fe30b300720e 100644 (file)
@@ -765,7 +765,7 @@ WERROR rpccli_spoolss_enumprinterkey(struct rpc_pipe_client *cli,
        *key_buffer = NULL;
 
        if (offered) {
-               buffer = talloc_array(mem_ctx, uint16_t, offered);
+               buffer = talloc_array(mem_ctx, uint16_t, offered/2);
                W_ERROR_HAVE_NO_MEMORY(buffer);
        }
 
@@ -779,7 +779,7 @@ WERROR rpccli_spoolss_enumprinterkey(struct rpc_pipe_client *cli,
 
        if (W_ERROR_EQUAL(werror, WERR_MORE_DATA)) {
                offered = needed;
-               buffer = talloc_realloc(mem_ctx, buffer, uint16_t, needed);
+               buffer = talloc_realloc(mem_ctx, buffer, uint16_t, needed/2);
                W_ERROR_HAVE_NO_MEMORY(buffer);
                status = rpccli_spoolss_EnumPrinterKey(cli, mem_ctx,
                                                       handle,
index f0bf8513f22c8ea90262f0c4151f270401d7e628..bf02ee0a53c8c8b6ce902673bafce9e2416cea06 100644 (file)
@@ -9324,7 +9324,7 @@ WERROR _spoolss_EnumPrinterKey(pipes_struct *p,
                goto done;
        }
 
-       if (r->in.offered == blob.length) {
+       if (r->in.offered >= blob.length) {
                memcpy(r->out.key_buffer, blob.data, blob.length);
        }