From 8304fe73f69ea7de57bd2d331038c4664553a9bd Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 16 Jan 2013 01:15:49 +0100 Subject: spoolss: make spoolss deal with ndr64 AddForm by using proper container object. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Guenther Signed-off-by: Günther Deschner Reviewed-by: David Disseldorp --- source3/rpc_server/spoolss/srv_spoolss_nt.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'source3/rpc_server/spoolss') diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c index 48a2981986..b4f1bec15e 100644 --- a/source3/rpc_server/spoolss/srv_spoolss_nt.c +++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c @@ -8648,7 +8648,7 @@ WERROR _spoolss_DeletePrinterData(struct pipes_struct *p, WERROR _spoolss_AddForm(struct pipes_struct *p, struct spoolss_AddForm *r) { - struct spoolss_AddFormInfo1 *form = r->in.info.info1; + struct spoolss_AddFormInfo1 *form; int snum = -1; WERROR status = WERR_OK; struct printer_handle *Printer = find_printer_index_by_hnd(p, r->in.handle); @@ -8673,6 +8673,15 @@ WERROR _spoolss_AddForm(struct pipes_struct *p, return WERR_ACCESS_DENIED; } + if (r->in.info_ctr->level != 1) { + return WERR_INVALID_LEVEL; + } + + form = r->in.info_ctr->info.info1; + if (!form) { + return WERR_INVALID_PARAM; + } + switch (form->flags) { case SPOOLSS_FORM_USER: case SPOOLSS_FORM_BUILTIN: -- cgit