From 5948fa9fe1992b54378e73f9bd17ef64f6b96ece Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 3 Apr 2001 23:09:04 +0000 Subject: Missed forms update - my CVS mistake. Jeremy. (This used to be commit 06dee898607ff2bf194d53fb55ad6d82e8f305e8) --- source3/rpc_server/srv_spoolss_nt.c | 91 ++++++++++++++++++++++++++++--------- 1 file changed, 70 insertions(+), 21 deletions(-) (limited to 'source3') diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c index f01de4570c..90147c868a 100644 --- a/source3/rpc_server/srv_spoolss_nt.c +++ b/source3/rpc_server/srv_spoolss_nt.c @@ -41,7 +41,7 @@ extern pstring global_myname; typedef struct _Printer{ BOOL document_started; BOOL page_started; - int jobid; /* jobid in printing backend */ + int jobid; /* jobid in printing backend */ BOOL printer_type; union { fstring handlename; @@ -5230,8 +5230,10 @@ uint32 _spoolss_enumforms(pipes_struct *p, SPOOL_Q_ENUMFORMS *q_u, SPOOL_R_ENUMF uint32 offered = q_u->offered; uint32 *needed = &r_u->needed; uint32 *numofforms = &r_u->numofforms; + uint32 numbuiltinforms; nt_forms_struct *list=NULL; + nt_forms_struct *builtinlist=NULL; FORM_1 *forms_1; int buffer_size=0; int i; @@ -5244,8 +5246,11 @@ uint32 _spoolss_enumforms(pipes_struct *p, SPOOL_Q_ENUMFORMS *q_u, SPOOL_R_ENUMF DEBUGADD(5,("Offered buffer size [%d]\n", offered)); DEBUGADD(5,("Info level [%d]\n", level)); + numbuiltinforms = get_builtin_ntforms(&builtinlist); + DEBUGADD(5,("Number of builtin forms [%d]\n", numbuiltinforms)); *numofforms = get_ntforms(&list); - DEBUGADD(5,("Number of forms [%d]\n", *numofforms)); + DEBUGADD(5,("Number of user forms [%d]\n", *numofforms)); + *numofforms += numbuiltinforms; if (*numofforms == 0) return ERROR_NO_MORE_ITEMS; @@ -5257,15 +5262,26 @@ uint32 _spoolss_enumforms(pipes_struct *p, SPOOL_Q_ENUMFORMS *q_u, SPOOL_R_ENUMF } /* construct the list of form structures */ - for (i=0; i<*numofforms; i++) { + for (i=0; ineeded; nt_forms_struct *list=NULL; + nt_forms_struct builtin_form; + BOOL foundBuiltin; FORM_1 form_1; fstring form_name; int buffer_size=0; @@ -5327,29 +5350,38 @@ uint32 _spoolss_getform(pipes_struct *p, SPOOL_Q_GETFORM *q_u, SPOOL_R_GETFORM * DEBUGADD(5,("Offered buffer size [%d]\n", offered)); DEBUGADD(5,("Info level [%d]\n", level)); - numofforms = get_ntforms(&list); - DEBUGADD(5,("Number of forms [%d]\n", numofforms)); + foundBuiltin = get_a_builtin_ntform(uni_formname,&builtin_form); + if (!foundBuiltin) { + numofforms = get_ntforms(&list); + DEBUGADD(5,("Number of forms [%d]\n", numofforms)); - if (numofforms == 0) - return ERROR_NO_MORE_ITEMS; + if (numofforms == 0) + return ERROR_INVALID_HANDLE; + } switch (level) { case 1: + if (foundBuiltin) { + fill_form_1(&form_1, &builtin_form); + } else { - /* Check if the requested name is in the list of form structures */ - for (i=0; ihandle; /* uint32 level = q_u->level; - notused. */ FORM *form = &q_u->form; + nt_forms_struct tmpForm; int count=0; nt_forms_struct *list=NULL; @@ -6147,6 +6180,11 @@ uint32 _spoolss_addform( pipes_struct *p, SPOOL_Q_ADDFORM *q_u, SPOOL_R_ADDFORM return ERROR_INVALID_HANDLE; } + /* can't add if builtin */ + if (get_a_builtin_ntform(&form->name,&tmpForm)) { + return ERROR_INVALID_PARAMETER; + } + count=get_ntforms(&list); if(!add_a_form(&list, form, &count)) return ERROR_NOT_ENOUGH_MEMORY; @@ -6164,7 +6202,7 @@ uint32 _spoolss_deleteform( pipes_struct *p, SPOOL_Q_DELETEFORM *q_u, SPOOL_R_DE { POLICY_HND *handle = &q_u->handle; UNISTR2 *form_name = &q_u->name; - + nt_forms_struct tmpForm; int count=0; uint32 ret = 0; nt_forms_struct *list=NULL; @@ -6177,6 +6215,11 @@ uint32 _spoolss_deleteform( pipes_struct *p, SPOOL_Q_DELETEFORM *q_u, SPOOL_R_DE return ERROR_INVALID_HANDLE; } + /* can't delete if builtin */ + if (get_a_builtin_ntform(form_name,&tmpForm)) { + return ERROR_INVALID_PARAMETER; + } + count = get_ntforms(&list); if(!delete_a_form(&list, form_name, &count, &ret)) return ERROR_INVALID_PARAMETER; @@ -6195,6 +6238,7 @@ uint32 _spoolss_setform(pipes_struct *p, SPOOL_Q_SETFORM *q_u, SPOOL_R_SETFORM * /* UNISTR2 *uni_name = &q_u->name; - notused. */ /* uint32 level = q_u->level; - notused. */ FORM *form = &q_u->form; + nt_forms_struct tmpForm; int count=0; nt_forms_struct *list=NULL; @@ -6206,6 +6250,11 @@ uint32 _spoolss_setform(pipes_struct *p, SPOOL_Q_SETFORM *q_u, SPOOL_R_SETFORM * DEBUG(0,("_spoolss_setform: Invalid handle (%s).\n", OUR_HANDLE(handle))); return ERROR_INVALID_HANDLE; } + /* can't set if builtin */ + if (get_a_builtin_ntform(&form->name,&tmpForm)) { + return ERROR_INVALID_PARAMETER; + } + count=get_ntforms(&list); update_a_form(&list, form, count); write_ntforms(&list, count); -- cgit