1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-26 21:57:41 +03:00

s3-spoolss: Fix architecture handling in spoolss_DeletePrinterDriverEx call

Pair-Programmed-With: Guenther Deschner <gd@samba.org>
Signed-off-by: Andreas Schneider <asn@samba.org>
Signed-off-by: Guenther Deschner <gd@samba.org>
This commit is contained in:
Andreas Schneider 2017-01-10 18:25:22 +01:00 committed by Stefan Metzmacher
parent 06e4d1c174
commit 34218e0448

View File

@ -1374,7 +1374,7 @@ bool printer_driver_in_use(TALLOC_CTX *mem_ctx,
{
int snum;
int n_services = lp_numservices();
bool in_use = False;
bool in_use = false;
struct spoolss_PrinterInfo2 *pinfo2 = NULL;
WERROR result;
@ -1399,7 +1399,7 @@ bool printer_driver_in_use(TALLOC_CTX *mem_ctx,
}
if (strequal(r->driver_name, pinfo2->drivername)) {
in_use = True;
in_use = true;
}
TALLOC_FREE(pinfo2);
@ -1416,26 +1416,31 @@ bool printer_driver_in_use(TALLOC_CTX *mem_ctx,
/* we can still remove the driver if there is one of
"Windows NT x86" version 2 or 3 left */
if (!strequal("Windows NT x86", r->architecture)) {
if (strequal(SPOOLSS_ARCHITECTURE_NT_X86, r->architecture)) {
if (r->version == 2) {
werr = winreg_get_driver(mem_ctx, b,
r->architecture,
r->driver_name,
3, &driver);
} else if (r->version == 3) {
werr = winreg_get_driver(mem_ctx, b,
r->architecture,
r->driver_name,
2, &driver);
} else {
DBG_ERR("Unknown driver version (%d)\n",
r->version);
werr = WERR_UNKNOWN_PRINTER_DRIVER;
}
} else if (strequal(SPOOLSS_ARCHITECTURE_x64, r->architecture)) {
werr = winreg_get_driver(mem_ctx, b,
"Windows NT x86",
SPOOLSS_ARCHITECTURE_NT_X86,
r->driver_name,
DRIVER_ANY_VERSION,
&driver);
} else if (r->version == 2) {
werr = winreg_get_driver(mem_ctx, b,
"Windows NT x86",
r->driver_name,
3, &driver);
} else if (r->version == 3) {
werr = winreg_get_driver(mem_ctx, b,
"Windows NT x86",
r->driver_name,
2, &driver);
} else {
DEBUG(0, ("printer_driver_in_use: ERROR!"
" unknown driver version (%d)\n",
r->version));
DBG_ERR("Unknown driver architecture: %s\n",
r->architecture);
werr = WERR_UNKNOWN_PRINTER_DRIVER;
}
@ -1443,7 +1448,7 @@ bool printer_driver_in_use(TALLOC_CTX *mem_ctx,
if ( W_ERROR_IS_OK(werr) ) {
/* it's ok to remove the driver, we have other architctures left */
in_use = False;
in_use = false;
talloc_free(driver);
}
}