diff options
Diffstat (limited to 'source3/rpc_server/spoolss/srv_spoolss_nt.c')
-rw-r--r-- | source3/rpc_server/spoolss/srv_spoolss_nt.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c index 9df0b8ab32..9601ce6a62 100644 --- a/source3/rpc_server/spoolss/srv_spoolss_nt.c +++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c @@ -5606,6 +5606,7 @@ WERROR _spoolss_GetPrinterDriver2(struct pipes_struct *p, { struct printer_handle *printer; WERROR result; + uint32_t version = r->in.client_major_version; int snum; @@ -5630,13 +5631,19 @@ WERROR _spoolss_GetPrinterDriver2(struct pipes_struct *p, return WERR_BADFID; } + if (r->in.client_major_version == SPOOLSS_DRIVER_VERSION_2012) { + DEBUG(3,("_spoolss_GetPrinterDriver2: v4 driver requested, " + "downgrading to v3\n")); + version = SPOOLSS_DRIVER_VERSION_200X; + } + result = construct_printer_driver_info_level(p->mem_ctx, get_session_info_system(), p->msg_ctx, r->in.level, r->out.info, snum, printer->servername, r->in.architecture, - r->in.client_major_version); + version); if (!W_ERROR_IS_OK(result)) { TALLOC_FREE(r->out.info); return result; |