diff options
author | Günther Deschner <gd@samba.org> | 2009-11-24 15:22:04 +0100 |
---|---|---|
committer | Günther Deschner <gd@samba.org> | 2009-11-24 15:49:35 +0100 |
commit | 846aa18648f3b34ab5cbc4dc4ba334bbedeab2f4 (patch) | |
tree | cbe1f28f1d0ce5aeb3d039d3b2a00053fc1ec5cb | |
parent | 2707dfb441801e753c74657f20b5ca22a274778f (diff) | |
download | samba-846aa18648f3b34ab5cbc4dc4ba334bbedeab2f4.tar.gz samba-846aa18648f3b34ab5cbc4dc4ba334bbedeab2f4.tar.xz samba-846aa18648f3b34ab5cbc4dc4ba334bbedeab2f4.zip |
s3-spoolss: fixes for _spoolss_EnumPrinterKey client and server.
Thanks Metze for review!
Guenther
-rw-r--r-- | source3/rpc_client/cli_spoolss.c | 4 | ||||
-rw-r--r-- | source3/rpc_server/srv_spoolss_nt.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/source3/rpc_client/cli_spoolss.c b/source3/rpc_client/cli_spoolss.c index 2dba1030691..6d6d5dfcfab 100644 --- a/source3/rpc_client/cli_spoolss.c +++ b/source3/rpc_client/cli_spoolss.c @@ -815,7 +815,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); } @@ -829,7 +829,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, diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index 072090b14a4..703dca15e8d 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -9203,7 +9203,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); } |