X-Git-Url: http://git.samba.org/?a=blobdiff_plain;f=source%2Frpc_server%2Fsrv_spoolss_nt.c;h=11827c223bb19320ec3cc485739b2611e0fa7610;hb=5c6c8e1fe93;hp=94bc0f80aa39d04823f2ca0cc785f8064e9b74bf;hpb=407e6e695b8366369b7c76af1ff76869b45347b3;p=samba.git diff --git a/source/rpc_server/srv_spoolss_nt.c b/source/rpc_server/srv_spoolss_nt.c index 94bc0f80aa3..11827c223bb 100644 --- a/source/rpc_server/srv_spoolss_nt.c +++ b/source/rpc_server/srv_spoolss_nt.c @@ -19,8 +19,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * along with this program; if not, see . */ /* Since the SPOOLSS rpc routines are basically DOS 16-bit calls wrapped @@ -64,7 +63,7 @@ static uint32 smb_connections=0; /* in printing/nt_printing.c */ -extern STANDARD_MAPPING printer_std_mapping, printserver_std_mapping; +extern struct standard_mapping printer_std_mapping, printserver_std_mapping; /* API table for Xcv Monitor functions */ @@ -329,7 +328,7 @@ WERROR delete_printer_hook( NT_USER_TOKEN *token, const char *sharename ) /* go ahead and re-read the services immediately */ reload_services( False ); - if ( share_defined( sharename ) ) + if ( lp_servicenumber( sharename ) < 0 ) return WERR_ACCESS_DENIED; return WERR_OK; @@ -389,13 +388,6 @@ static BOOL get_printer_snum(pipes_struct *p, POLICY_HND *hnd, int *number, case SPLHND_PRINTER: DEBUG(4,("short name:%s\n", Printer->sharename)); *number = print_queue_snum(Printer->sharename); - if ((*number != -1) && (params != NULL)) { - *params = get_share_params(tmp_talloc_ctx(), - Printer->sharename); - if (*params == NULL) { - return False; - } - } return (*number != -1); case SPLHND_SERVER: return False; @@ -1550,7 +1542,7 @@ WERROR _spoolss_open_printer_ex( pipes_struct *p, SPOOL_Q_OPEN_PRINTER_EX *q_u, /* some sanity check because you can open a printer or a print server */ /* aka: \\server\printer or \\server */ - unistr2_to_ascii(name, q_u->printername, sizeof(name)-1); + unistr2_to_ascii(name, q_u->printername, sizeof(name)); DEBUGADD(3,("checking name: %s\n",name)); @@ -1998,8 +1990,8 @@ WERROR _spoolss_deleteprinterdriver(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIVER return WERR_ACCESS_DENIED; } - unistr2_to_ascii(driver, &q_u->driver, sizeof(driver)-1 ); - unistr2_to_ascii(arch, &q_u->arch, sizeof(arch)-1 ); + unistr2_to_ascii(driver, &q_u->driver, sizeof(driver)); + unistr2_to_ascii(arch, &q_u->arch, sizeof(arch)); /* check that we have a valid driver name first */ @@ -2093,8 +2085,8 @@ WERROR _spoolss_deleteprinterdriverex(pipes_struct *p, SPOOL_Q_DELETEPRINTERDRIV return WERR_ACCESS_DENIED; } - unistr2_to_ascii(driver, &q_u->driver, sizeof(driver)-1 ); - unistr2_to_ascii(arch, &q_u->arch, sizeof(arch)-1 ); + unistr2_to_ascii(driver, &q_u->driver, sizeof(driver)); + unistr2_to_ascii(arch, &q_u->arch, sizeof(arch)); /* check that we have a valid driver name first */ if ((version=get_version_id(arch)) == -1) { @@ -2276,6 +2268,7 @@ static WERROR getprinterdata_printer_server(TALLOC_CTX *ctx, fstring value, uint *type = REG_DWORD; if ( !(*data = TALLOC_ARRAY(ctx, uint8, sizeof(uint32) )) ) return WERR_NOMEM; + SIVAL(*data, 0, 0x00); *needed = 0x4; return WERR_OK; } @@ -2470,7 +2463,7 @@ WERROR _spoolss_getprinterdata(pipes_struct *p, SPOOL_Q_GETPRINTERDATA *q_u, SPO goto done; } - unistr2_to_ascii(value, valuename, sizeof(value)-1); + unistr2_to_ascii(value, valuename, sizeof(value)); if ( Printer->printer_type == SPLHND_SERVER ) status = getprinterdata_printer_server( p->mem_ctx, value, type, data, needed, *out_size ); @@ -2688,7 +2681,7 @@ WERROR _spoolss_rffpcnex(pipes_struct *p, SPOOL_Q_RFFPCNEX *q_u, SPOOL_R_RFFPCNE Printer->notify.option=dup_spool_notify_option(option); unistr2_to_ascii(Printer->notify.localmachine, localmachine, - sizeof(Printer->notify.localmachine)-1); + sizeof(Printer->notify.localmachine)); /* Connect to the client machine and send a ReplyOpenPrinter */ @@ -3953,9 +3946,7 @@ done: * fill a printer_info_0 struct ********************************************************************/ -static BOOL construct_printer_info_0(Printer_entry *print_hnd, - PRINTER_INFO_0 *printer, - const struct share_params *params) +static BOOL construct_printer_info_0(Printer_entry *print_hnd, PRINTER_INFO_0 *printer, int snum) { pstring chaine; int count; @@ -3966,15 +3957,14 @@ static BOOL construct_printer_info_0(Printer_entry *print_hnd, time_t setuptime; print_status_struct status; - if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, - lp_const_servicename(params->service)))) + if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, lp_const_servicename(snum)))) return False; - count = print_queue_length(params->service, &status); + count = print_queue_length(snum, &status); /* check if we already have a counter for this printer */ for(session_counter = counter_list; session_counter; session_counter = session_counter->next) { - if (session_counter->snum == params->service) + if (session_counter->snum == snum) break; } @@ -3985,7 +3975,7 @@ static BOOL construct_printer_info_0(Printer_entry *print_hnd, return False; } ZERO_STRUCTP(session_counter); - session_counter->snum=params->service; + session_counter->snum=snum; session_counter->counter=0; DLIST_ADD(counter_list, session_counter); } @@ -4061,25 +4051,21 @@ static BOOL construct_printer_info_0(Printer_entry *print_hnd, * construct_printer_info_1 * fill a printer_info_1 struct ********************************************************************/ -static BOOL construct_printer_info_1(Printer_entry *print_hnd, uint32 flags, - PRINTER_INFO_1 *printer, - const struct share_params *params) +static BOOL construct_printer_info_1(Printer_entry *print_hnd, uint32 flags, PRINTER_INFO_1 *printer, int snum) { pstring chaine; pstring chaine2; NT_PRINTER_INFO_LEVEL *ntprinter = NULL; - if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, - lp_const_servicename(params->service)))) + if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, lp_const_servicename(snum)))) return False; printer->flags=flags; if (*ntprinter->info_2->comment == '\0') { - init_unistr(&printer->comment, lp_comment(params->service)); + init_unistr(&printer->comment, lp_comment(snum)); slprintf(chaine,sizeof(chaine)-1,"%s,%s,%s", ntprinter->info_2->printername, - ntprinter->info_2->drivername, - lp_comment(params->service)); + ntprinter->info_2->drivername, lp_comment(snum)); } else { init_unistr(&printer->comment, ntprinter->info_2->comment); /* saved comment. */ @@ -4170,7 +4156,7 @@ DEVICEMODE *construct_dev_mode(const char *servicename) DEBUGADD(8,("getting printer characteristics\n")); - if (!W_ERROR_IS_OK(get_a_printer(NULL, &printer, 2, servicename))) + if (!W_ERROR_IS_OK(get_a_printer(NULL, &printer, 2, servicename))) return NULL; if ( !printer->info_2->devmode ) { @@ -4203,29 +4189,26 @@ done: * fill a printer_info_2 struct ********************************************************************/ -static BOOL construct_printer_info_2(Printer_entry *print_hnd, - PRINTER_INFO_2 *printer, - const struct share_params *params) +static BOOL construct_printer_info_2(Printer_entry *print_hnd, PRINTER_INFO_2 *printer, int snum) { int count; NT_PRINTER_INFO_LEVEL *ntprinter = NULL; print_status_struct status; - if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, - lp_const_servicename(params->service)))) + if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, lp_const_servicename(snum)))) return False; - count = print_queue_length(params->service, &status); + count = print_queue_length(snum, &status); init_unistr(&printer->servername, ntprinter->info_2->servername); /* servername*/ init_unistr(&printer->printername, ntprinter->info_2->printername); /* printername*/ - init_unistr(&printer->sharename, lp_servicename(params->service)); /* sharename */ + init_unistr(&printer->sharename, lp_servicename(snum)); /* sharename */ init_unistr(&printer->portname, ntprinter->info_2->portname); /* port */ init_unistr(&printer->drivername, ntprinter->info_2->drivername); /* drivername */ if (*ntprinter->info_2->comment == '\0') - init_unistr(&printer->comment, lp_comment(params->service)); /* comment */ + init_unistr(&printer->comment, lp_comment(snum)); /* comment */ else init_unistr(&printer->comment, ntprinter->info_2->comment); /* saved comment. */ @@ -4246,7 +4229,7 @@ static BOOL construct_printer_info_2(Printer_entry *print_hnd, printer->averageppm = ntprinter->info_2->averageppm; /* average pages per minute */ if ( !(printer->devmode = construct_dev_mode( - lp_const_servicename(params->service))) ) + lp_const_servicename(snum))) ) DEBUG(8, ("Returning NULL Devicemode!\n")); printer->secdesc = NULL; @@ -4257,7 +4240,7 @@ static BOOL construct_printer_info_2(Printer_entry *print_hnd, /* don't use talloc_steal() here unless you do a deep steal of all the SEC_DESC members */ - printer->secdesc = dup_sec_desc( get_talloc_ctx(), + printer->secdesc = dup_sec_desc( talloc_tos(), ntprinter->info_2->secdesc_buf->sd ); } @@ -4271,15 +4254,12 @@ static BOOL construct_printer_info_2(Printer_entry *print_hnd, * fill a printer_info_3 struct ********************************************************************/ -static BOOL construct_printer_info_3(Printer_entry *print_hnd, - PRINTER_INFO_3 **pp_printer, - const struct share_params *params) +static BOOL construct_printer_info_3(Printer_entry *print_hnd, PRINTER_INFO_3 **pp_printer, int snum) { NT_PRINTER_INFO_LEVEL *ntprinter = NULL; PRINTER_INFO_3 *printer = NULL; - if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, - lp_const_servicename(params->service)))) + if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, lp_const_servicename(snum)))) return False; *pp_printer = NULL; @@ -4297,7 +4277,7 @@ static BOOL construct_printer_info_3(Printer_entry *print_hnd, /* don't use talloc_steal() here unless you do a deep steal of all the SEC_DESC members */ - printer->secdesc = dup_sec_desc( get_talloc_ctx(), + printer->secdesc = dup_sec_desc( talloc_tos(), ntprinter->info_2->secdesc_buf->sd ); } @@ -4312,14 +4292,11 @@ static BOOL construct_printer_info_3(Printer_entry *print_hnd, * fill a printer_info_4 struct ********************************************************************/ -static BOOL construct_printer_info_4(Printer_entry *print_hnd, - PRINTER_INFO_4 *printer, - const struct share_params *params) +static BOOL construct_printer_info_4(Printer_entry *print_hnd, PRINTER_INFO_4 *printer, int snum) { NT_PRINTER_INFO_LEVEL *ntprinter = NULL; - if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, - lp_const_servicename(params->service)))) + if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, lp_const_servicename(snum)))) return False; init_unistr(&printer->printername, ntprinter->info_2->printername); /* printername*/ @@ -4335,14 +4312,11 @@ static BOOL construct_printer_info_4(Printer_entry *print_hnd, * fill a printer_info_5 struct ********************************************************************/ -static BOOL construct_printer_info_5(Printer_entry *print_hnd, - PRINTER_INFO_5 *printer, - const struct share_params *params) +static BOOL construct_printer_info_5(Printer_entry *print_hnd, PRINTER_INFO_5 *printer, int snum) { NT_PRINTER_INFO_LEVEL *ntprinter = NULL; - if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, - lp_const_servicename(params->service)))) + if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, lp_const_servicename(snum)))) return False; init_unistr(&printer->printername, ntprinter->info_2->printername); @@ -4366,17 +4340,17 @@ static BOOL construct_printer_info_5(Printer_entry *print_hnd, static BOOL construct_printer_info_6(Printer_entry *print_hnd, PRINTER_INFO_6 *printer, - const struct share_params *params) + int snum) { NT_PRINTER_INFO_LEVEL *ntprinter = NULL; int count; print_status_struct status; if (!W_ERROR_IS_OK(get_a_printer(print_hnd, &ntprinter, 2, - lp_const_servicename(params->service)))) + lp_const_servicename(snum)))) return False; - count = print_queue_length(params->service, &status); + count = print_queue_length(snum, &status); printer->status = nt_printq_status(status.status); @@ -4390,14 +4364,12 @@ static BOOL construct_printer_info_6(Printer_entry *print_hnd, * fill a printer_info_7 struct ********************************************************************/ -static BOOL construct_printer_info_7(Printer_entry *print_hnd, - PRINTER_INFO_7 *printer, - const struct share_params *params) +static BOOL construct_printer_info_7(Printer_entry *print_hnd, PRINTER_INFO_7 *printer, int snum) { char *guid_str = NULL; struct GUID guid; - if (is_printer_published(print_hnd, params->service, &guid)) { + if (is_printer_published(print_hnd, snum, &guid)) { asprintf(&guid_str, "{%s}", smb_uuid_string_static(guid)); strupper_m(guid_str); init_unistr(&printer->guid, guid_str); @@ -4416,45 +4388,31 @@ static BOOL construct_printer_info_7(Printer_entry *print_hnd, static WERROR enum_all_printers_info_1(uint32 flags, RPC_BUFFER *buffer, uint32 offered, uint32 *needed, uint32 *returned) { + int snum; int i; - struct share_iterator *shares; - struct share_params *printer; + int n_services=lp_numservices(); PRINTER_INFO_1 *printers=NULL; + PRINTER_INFO_1 current_prt; WERROR result = WERR_OK; DEBUG(4,("enum_all_printers_info_1\n")); - if (!(shares = share_list_all(NULL))) { - DEBUG(5, ("Could not list printers\n")); - return WERR_ACCESS_DENIED; - } - - while ((printer = next_printer(shares)) != NULL) { - PRINTER_INFO_1 current_prt; - - DEBUG(4,("Found a printer in smb.conf: %s\n", - lp_servicename(printer->service))); + for (snum=0; snumservice))); + memcpy(&printers[*returned], ¤t_prt, sizeof(PRINTER_INFO_2)); - if (!construct_printer_info_2(NULL, ¤t_prt, - printer)) { - continue; - } - if ( !(printers=SMB_REALLOC_ARRAY(printers, PRINTER_INFO_2, - *returned +1)) ) { - DEBUG(2,("enum_all_printers_info_2: failed to enlarge " - "printers buffer!\n")); - *returned = 0; - TALLOC_FREE(shares); - return WERR_NOMEM; + (*returned)++; + } } - - DEBUG(4,("ReAlloced memory for [%d] PRINTER_INFO_2\n", - *returned + 1)); - - memcpy(&printers[*returned], ¤t_prt, - sizeof(PRINTER_INFO_2)); - (*returned)++; - TALLOC_FREE(printer); } /* check the required size. */ @@ -4683,7 +4628,6 @@ out: free_devmode(printers[i].devmode); SAFE_FREE(printers); - TALLOC_FREE(shares); if ( !W_ERROR_IS_OK(result) ) *returned = 0; @@ -4804,7 +4748,7 @@ WERROR _spoolss_enumprinters( pipes_struct *p, SPOOL_Q_ENUMPRINTERS *q_u, SPOOL_ * Level 5: same as Level 2 */ - unistr2_to_ascii(name, servername, sizeof(name)-1); + unistr2_to_ascii(name, servername, sizeof(name)); strupper_m(name); switch (level) { @@ -4824,10 +4768,7 @@ WERROR _spoolss_enumprinters( pipes_struct *p, SPOOL_Q_ENUMPRINTERS *q_u, SPOOL_ /**************************************************************************** ****************************************************************************/ -static WERROR getprinter_level_0(Printer_entry *print_hnd, - const struct share_params *params, - RPC_BUFFER *buffer, uint32 offered, - uint32 *needed) +static WERROR getprinter_level_0(Printer_entry *print_hnd, int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed) { PRINTER_INFO_0 *printer=NULL; WERROR result = WERR_OK; @@ -4835,7 +4776,7 @@ static WERROR getprinter_level_0(Printer_entry *print_hnd, if((printer=SMB_MALLOC_P(PRINTER_INFO_0)) == NULL) return WERR_NOMEM; - construct_printer_info_0(print_hnd, printer, params); + construct_printer_info_0(print_hnd, printer, snum); /* check the required size. */ *needed += spoolss_size_printer_info_0(printer); @@ -4864,10 +4805,7 @@ out: /**************************************************************************** ****************************************************************************/ -static WERROR getprinter_level_1(Printer_entry *print_hnd, - const struct share_params *params, - RPC_BUFFER *buffer, uint32 offered, - uint32 *needed) +static WERROR getprinter_level_1(Printer_entry *print_hnd, int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed) { PRINTER_INFO_1 *printer=NULL; WERROR result = WERR_OK; @@ -4875,8 +4813,7 @@ static WERROR getprinter_level_1(Printer_entry *print_hnd, if((printer=SMB_MALLOC_P(PRINTER_INFO_1)) == NULL) return WERR_NOMEM; - construct_printer_info_1(print_hnd, PRINTER_ENUM_ICON8, printer, - params); + construct_printer_info_1(print_hnd, PRINTER_ENUM_ICON8, printer, snum); /* check the required size. */ *needed += spoolss_size_printer_info_1(printer); @@ -4904,10 +4841,7 @@ out: /**************************************************************************** ****************************************************************************/ -static WERROR getprinter_level_2(Printer_entry *print_hnd, - const struct share_params *params, - RPC_BUFFER *buffer, uint32 offered, - uint32 *needed) +static WERROR getprinter_level_2(Printer_entry *print_hnd, int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed) { PRINTER_INFO_2 *printer=NULL; WERROR result = WERR_OK; @@ -4915,7 +4849,7 @@ static WERROR getprinter_level_2(Printer_entry *print_hnd, if((printer=SMB_MALLOC_P(PRINTER_INFO_2))==NULL) return WERR_NOMEM; - construct_printer_info_2(print_hnd, printer, params); + construct_printer_info_2(print_hnd, printer, snum); /* check the required size. */ *needed += spoolss_size_printer_info_2(printer); @@ -4944,15 +4878,12 @@ out: /**************************************************************************** ****************************************************************************/ -static WERROR getprinter_level_3(Printer_entry *print_hnd, - const struct share_params *params, - RPC_BUFFER *buffer, uint32 offered, - uint32 *needed) +static WERROR getprinter_level_3(Printer_entry *print_hnd, int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed) { PRINTER_INFO_3 *printer=NULL; WERROR result = WERR_OK; - if (!construct_printer_info_3(print_hnd, &printer, params)) + if (!construct_printer_info_3(print_hnd, &printer, snum)) return WERR_NOMEM; /* check the required size. */ @@ -4981,10 +4912,7 @@ out: /**************************************************************************** ****************************************************************************/ -static WERROR getprinter_level_4(Printer_entry *print_hnd, - const struct share_params *params, - RPC_BUFFER *buffer, uint32 offered, - uint32 *needed) +static WERROR getprinter_level_4(Printer_entry *print_hnd, int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed) { PRINTER_INFO_4 *printer=NULL; WERROR result = WERR_OK; @@ -4992,7 +4920,7 @@ static WERROR getprinter_level_4(Printer_entry *print_hnd, if((printer=SMB_MALLOC_P(PRINTER_INFO_4))==NULL) return WERR_NOMEM; - if (!construct_printer_info_4(print_hnd, printer, params)) { + if (!construct_printer_info_4(print_hnd, printer, snum)) { SAFE_FREE(printer); return WERR_NOMEM; } @@ -5023,10 +4951,7 @@ out: /**************************************************************************** ****************************************************************************/ -static WERROR getprinter_level_5(Printer_entry *print_hnd, - const struct share_params *params, - RPC_BUFFER *buffer, uint32 offered, - uint32 *needed) +static WERROR getprinter_level_5(Printer_entry *print_hnd, int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed) { PRINTER_INFO_5 *printer=NULL; WERROR result = WERR_OK; @@ -5034,7 +4959,7 @@ static WERROR getprinter_level_5(Printer_entry *print_hnd, if((printer=SMB_MALLOC_P(PRINTER_INFO_5))==NULL) return WERR_NOMEM; - if (!construct_printer_info_5(print_hnd, printer, params)) { + if (!construct_printer_info_5(print_hnd, printer, snum)) { free_printer_info_5(printer); return WERR_NOMEM; } @@ -5063,7 +4988,7 @@ out: } static WERROR getprinter_level_6(Printer_entry *print_hnd, - const struct share_params *params, + int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed) { @@ -5074,7 +4999,7 @@ static WERROR getprinter_level_6(Printer_entry *print_hnd, return WERR_NOMEM; } - if (!construct_printer_info_6(print_hnd, printer, params)) { + if (!construct_printer_info_6(print_hnd, printer, snum)) { free_printer_info_6(printer); return WERR_NOMEM; } @@ -5102,10 +5027,7 @@ out: return result; } -static WERROR getprinter_level_7(Printer_entry *print_hnd, - const struct share_params *params, - RPC_BUFFER *buffer, uint32 offered, - uint32 *needed) +static WERROR getprinter_level_7(Printer_entry *print_hnd, int snum, RPC_BUFFER *buffer, uint32 offered, uint32 *needed) { PRINTER_INFO_7 *printer=NULL; WERROR result = WERR_OK; @@ -5113,7 +5035,7 @@ static WERROR getprinter_level_7(Printer_entry *print_hnd, if((printer=SMB_MALLOC_P(PRINTER_INFO_7))==NULL) return WERR_NOMEM; - if (!construct_printer_info_7(print_hnd, printer, params)) + if (!construct_printer_info_7(print_hnd, printer, snum)) return WERR_NOMEM; /* check the required size. */ @@ -5151,7 +5073,6 @@ WERROR _spoolss_getprinter(pipes_struct *p, SPOOL_Q_GETPRINTER *q_u, SPOOL_R_GET uint32 offered = q_u->offered; uint32 *needed = &r_u->needed; Printer_entry *Printer=find_printer_index_by_hnd(p, handle); - struct share_params *params; int snum; @@ -5166,34 +5087,26 @@ WERROR _spoolss_getprinter(pipes_struct *p, SPOOL_Q_GETPRINTER *q_u, SPOOL_R_GET *needed=0; - if (!get_printer_snum(p, handle, &snum, ¶ms)) + if (!get_printer_snum(p, handle, &snum, NULL)) return WERR_BADFID; switch (level) { case 0: - return getprinter_level_0(Printer, params, buffer, offered, - needed); + return getprinter_level_0(Printer, snum, buffer, offered, needed); case 1: - return getprinter_level_1(Printer, params, buffer, offered, - needed); + return getprinter_level_1(Printer, snum, buffer, offered, needed); case 2: - return getprinter_level_2(Printer, params, buffer, offered, - needed); + return getprinter_level_2(Printer, snum, buffer, offered, needed); case 3: - return getprinter_level_3(Printer, params, buffer, offered, - needed); + return getprinter_level_3(Printer, snum, buffer, offered, needed); case 4: - return getprinter_level_4(Printer, params, buffer, offered, - needed); + return getprinter_level_4(Printer, snum, buffer, offered, needed); case 5: - return getprinter_level_5(Printer, params, buffer, offered, - needed); - case 6: - return getprinter_level_6(Printer, params, buffer, offered, - needed); + return getprinter_level_5(Printer, snum, buffer, offered, needed); + case 6: + return getprinter_level_6(Printer, snum, buffer, offered, needed); case 7: - return getprinter_level_7(Printer, params, buffer, offered, - needed); + return getprinter_level_7(Printer, snum, buffer, offered, needed); } return WERR_UNKNOWN_LEVEL; } @@ -5788,7 +5701,7 @@ WERROR _spoolss_getprinterdriver2(pipes_struct *p, SPOOL_Q_GETPRINTERDRIVER2 *q_ *serverminorversion = 0; fstrcpy(servername, get_server_name( printer )); - unistr2_to_ascii(architecture, uni_arch, sizeof(architecture)-1); + unistr2_to_ascii(architecture, uni_arch, sizeof(architecture)); if (!get_printer_snum(p, handle, &snum, NULL)) return WERR_BADFID; @@ -7215,8 +7128,8 @@ WERROR _spoolss_enumprinterdrivers( pipes_struct *p, SPOOL_Q_ENUMPRINTERDRIVERS *needed = 0; *returned = 0; - unistr2_to_ascii(architecture, &q_u->environment, sizeof(architecture)-1); - unistr2_to_ascii(servername, &q_u->name, sizeof(servername)-1); + unistr2_to_ascii(architecture, &q_u->environment, sizeof(architecture)); + unistr2_to_ascii(servername, &q_u->name, sizeof(servername)); if ( !is_myname_or_ipaddr( servername ) ) return WERR_UNKNOWN_PRINTER_DRIVER; @@ -7388,7 +7301,7 @@ WERROR _spoolss_getform(pipes_struct *p, SPOOL_Q_GETFORM *q_u, SPOOL_R_GETFORM * rpcbuf_move(q_u->buffer, &r_u->buffer); buffer = r_u->buffer; - unistr2_to_ascii(form_name, uni_formname, sizeof(form_name)-1); + unistr2_to_ascii(form_name, uni_formname, sizeof(form_name)); DEBUG(4,("_spoolss_getform\n")); DEBUGADD(5,("Offered buffer size [%d]\n", offered)); @@ -8004,8 +7917,8 @@ static WERROR getprinterdriverdir_level_1(UNISTR2 *name, UNISTR2 *uni_environmen DRIVER_DIRECTORY_1 *info=NULL; WERROR result = WERR_OK; - unistr2_to_ascii(servername, name, sizeof(servername)-1); - unistr2_to_ascii(long_archi, uni_environment, sizeof(long_archi)-1); + unistr2_to_ascii(servername, name, sizeof(servername)); + unistr2_to_ascii(long_archi, uni_environment, sizeof(long_archi)); /* check for beginning double '\'s and that the server long enough */ @@ -8322,7 +8235,7 @@ WERROR _spoolss_setprinterdata( pipes_struct *p, SPOOL_Q_SETPRINTERDATA *q_u, SP if (!W_ERROR_IS_OK(status)) return status; - unistr2_to_ascii( valuename, value, sizeof(valuename)-1 ); + unistr2_to_ascii(valuename, value, sizeof(valuename)); /* * When client side code sets a magic printer data key, detect it and save @@ -8414,7 +8327,7 @@ WERROR _spoolss_deleteprinterdata(pipes_struct *p, SPOOL_Q_DELETEPRINTERDATA *q_ if (!W_ERROR_IS_OK(status)) return status; - unistr2_to_ascii( valuename, value, sizeof(valuename)-1 ); + unistr2_to_ascii(valuename, value, sizeof(valuename)); status = delete_printer_dataex( printer, SPOOL_PRINTERDATA_KEY, valuename ); @@ -9136,8 +9049,8 @@ WERROR _spoolss_getprinterdataex(pipes_struct *p, SPOOL_Q_GETPRINTERDATAEX *q_u, DEBUG(4,("_spoolss_getprinterdataex\n")); - unistr2_to_ascii(keyname, &q_u->keyname, sizeof(keyname) - 1); - unistr2_to_ascii(valuename, &q_u->valuename, sizeof(valuename) - 1); + unistr2_to_ascii(keyname, &q_u->keyname, sizeof(keyname)); + unistr2_to_ascii(valuename, &q_u->valuename, sizeof(valuename)); DEBUG(10, ("_spoolss_getprinterdataex: key => [%s], value => [%s]\n", keyname, valuename)); @@ -9268,8 +9181,8 @@ WERROR _spoolss_setprinterdataex(pipes_struct *p, SPOOL_Q_SETPRINTERDATAEX *q_u, if (!W_ERROR_IS_OK(status)) return status; - unistr2_to_ascii( valuename, &q_u->value, sizeof(valuename) - 1); - unistr2_to_ascii( keyname, &q_u->key, sizeof(keyname) - 1); + unistr2_to_ascii( valuename, &q_u->value, sizeof(valuename)); + unistr2_to_ascii( keyname, &q_u->key, sizeof(keyname)); /* check for OID in valuename */ @@ -9346,8 +9259,8 @@ WERROR _spoolss_deleteprinterdataex(pipes_struct *p, SPOOL_Q_DELETEPRINTERDATAEX if (!W_ERROR_IS_OK(status)) return status; - unistr2_to_ascii( valuename, value, sizeof(valuename)-1 ); - unistr2_to_ascii( keyname, key, sizeof(keyname)-1 ); + unistr2_to_ascii(valuename, value, sizeof(valuename)); + unistr2_to_ascii(keyname, key, sizeof(keyname)); status = delete_printer_dataex( printer, keyname, valuename ); @@ -9395,7 +9308,7 @@ WERROR _spoolss_enumprinterkey(pipes_struct *p, SPOOL_Q_ENUMPRINTERKEY *q_u, SPO /* get the list of subkey names */ - unistr2_to_ascii( key, &q_u->key, sizeof(key)-1 ); + unistr2_to_ascii(key, &q_u->key, sizeof(key)); data = printer->info_2->data; num_keys = get_printer_subkeys( data, key, &keynames ); @@ -9470,7 +9383,7 @@ WERROR _spoolss_deleteprinterkey(pipes_struct *p, SPOOL_Q_DELETEPRINTERKEY *q_u, /* delete the key and all subneys */ - unistr2_to_ascii(key, &q_u->keyname, sizeof(key) - 1); + unistr2_to_ascii(key, &q_u->keyname, sizeof(key)); status = delete_all_printer_data( printer->info_2, key ); @@ -9521,7 +9434,7 @@ WERROR _spoolss_enumprinterdataex(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATAEX *q_ * --jerry */ - unistr2_to_ascii(key, &q_u->key, sizeof(key) - 1); + unistr2_to_ascii(key, &q_u->key, sizeof(key)); if ( !strlen(key) ) { result = WERR_INVALID_PARAM; goto done; @@ -9541,7 +9454,7 @@ WERROR _spoolss_enumprinterdataex(pipes_struct *p, SPOOL_Q_ENUMPRINTERDATAEX *q_ p_data = printer->info_2->data; - unistr2_to_ascii(key, &q_u->key, sizeof(key) - 1); + unistr2_to_ascii(key, &q_u->key, sizeof(key)); if ( (key_index = lookup_printerkey( p_data, key)) == -1 ) { DEBUG(10,("_spoolss_enumprinterdataex: Unknown keyname [%s]\n", key)); @@ -9658,7 +9571,7 @@ static WERROR getprintprocessordirectory_level_1(UNISTR2 *name, PRINTPROCESSOR_DIRECTORY_1 *info=NULL; WERROR result = WERR_OK; - unistr2_to_ascii(long_archi, environment, sizeof(long_archi)-1); + unistr2_to_ascii(long_archi, environment, sizeof(long_archi)); if (!get_short_archi(long_archi)) return WERR_INVALID_ENVIRONMENT;