From e512ccb5b677fa7f285829ec645fc067837c0e11 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 26 Nov 2009 19:01:54 +0100 Subject: s3-spoolss: simplify _spoolss_EnumPrinterKey a little more. Guenther --- source3/rpc_server/srv_spoolss_nt.c | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) (limited to 'source3/rpc_server') diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index c704418334..8d7973d13e 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -9125,10 +9125,6 @@ WERROR _spoolss_EnumPrinterKey(pipes_struct *p, goto done; } - /* two byte termination (a multisz) */ - - *r->out.needed = 2; - array = talloc_zero_array(r->out.key_buffer, const char *, num_keys + 1); if (!array) { result = WERR_NOMEM; @@ -9145,23 +9141,19 @@ WERROR _spoolss_EnumPrinterKey(pipes_struct *p, result = WERR_NOMEM; goto done; } - - *r->out.needed += strlen_m_term(keynames[i]) * 2; - } - - if (r->in.offered < *r->out.needed) { - result = WERR_MORE_DATA; - goto done; } - result = WERR_OK; - if (!push_reg_multi_sz(p->mem_ctx, &blob, array)) { result = WERR_NOMEM; goto done; } - if (r->in.offered >= blob.length) { + *r->out.needed = blob.length; + + if (r->in.offered < *r->out.needed) { + result = WERR_MORE_DATA; + } else { + result = WERR_OK; memcpy(r->out.key_buffer, blob.data, blob.length); } -- cgit