The Samba-Bugzilla – Attachment 6554 Details for
Bug 8214
printer driver upgrade fails, causing smbd to exit on startup
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
proposed driver upgrade fix
0001-s3-printing-fix-internal-printing-tdb-upgrade.patch (text/plain), 3.96 KB, created by
David Disseldorp
on 2011-06-09 23:08:41 UTC
(
hide
)
Description:
proposed driver upgrade fix
Filename:
MIME Type:
Creator:
David Disseldorp
Created:
2011-06-09 23:08:41 UTC
Size:
3.96 KB
patch
obsolete
>From 343cfc45281999a9ac7977379ad3652bac3232d9 Mon Sep 17 00:00:00 2001 >From: David Disseldorp <ddiss@suse.de> >Date: Thu, 9 Jun 2011 16:55:19 +0200 >Subject: [PATCH] s3-printing: fix internal printing tdb upgrade > >move_driver_file_to_download_area() then assumes that files >corresponding to the AddPrinterDriver request being handled are staged >in the $architecture subdirectory of the print$ share path. This is >where clients upload printer driver files prior to them being moved by >the server into the $architecture\$version directory. > >This assumption is incorrect when an AddPrinterDriver is issued to >upgrade internal printing tdbs to the new registry format. > >This fix adds a new internal add printer driver flag to skip >manipulation of printer driver files in this case. > >https://bugzilla.samba.org/show_bug.cgi?id=8214 >--- > librpc/idl/spoolss.idl | 3 ++- > source3/printing/nt_printing_migrate.c | 11 ++++++----- > source3/rpc_server/spoolss/srv_spoolss_nt.c | 22 +++++++++++++--------- > 3 files changed, 21 insertions(+), 15 deletions(-) > >diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl >index 4599e3a..e3b2743 100644 >--- a/librpc/idl/spoolss.idl >+++ b/librpc/idl/spoolss.idl >@@ -3074,7 +3074,8 @@ cpp_quote("#define spoolss_security_descriptor security_descriptor") > APD_COPY_FROM_DIRECTORY = 0x00000010, > APD_DONT_COPY_FILES_TO_CLUSTER = 0x00001000, > APD_COPY_TO_ALL_SPOOLERS = 0x00002000, >- APD_RETURN_BLOCKING_STATUS_CODE = 0x00010000 >+ APD_RETURN_BLOCKING_STATUS_CODE = 0x00010000, >+ APD_SKIP_FILES = 0x80000000 /* internal */ > } spoolss_AddPrinterDriverExFlags; > > [public] WERROR spoolss_AddPrinterDriverEx( >diff --git a/source3/printing/nt_printing_migrate.c b/source3/printing/nt_printing_migrate.c >index f56fa9a..4d01671 100644 >--- a/source3/printing/nt_printing_migrate.c >+++ b/source3/printing/nt_printing_migrate.c >@@ -188,11 +188,12 @@ static NTSTATUS migrate_driver(TALLOC_CTX *mem_ctx, > d.level = 3; > d.info.info3 = &d3; > >- status = dcerpc_spoolss_AddPrinterDriver(b, >- mem_ctx, >- srv_name_slash, >- &d, >- &result); >+ status = dcerpc_spoolss_AddPrinterDriverEx(b, >+ mem_ctx, >+ srv_name_slash, >+ &d, >+ APD_SKIP_FILES, >+ &result); > if (!NT_STATUS_IS_OK(status)) { > DEBUG(2, ("dcerpc_spoolss_AddPrinterDriver(%s) refused -- %s.\n", > d3.driver_name, nt_errstr(status))); >diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c b/source3/rpc_server/spoolss/srv_spoolss_nt.c >index 7980072..67f4f44 100644 >--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c >+++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c >@@ -8023,13 +8023,15 @@ WERROR _spoolss_AddPrinterDriverEx(struct pipes_struct *p, > /* > * we only support the semantics of AddPrinterDriver() > * i.e. only copy files that are newer than existing ones >+ * APD_SKIP_FILES is used internally to modify driver meta-data only > */ > > if (r->in.flags == 0) { > return WERR_INVALID_PARAM; > } > >- if (r->in.flags != APD_COPY_NEW_FILES) { >+ if ((r->in.flags != APD_COPY_NEW_FILES) >+ && (r->in.flags != APD_SKIP_FILES)) { > return WERR_ACCESS_DENIED; > } > >@@ -8043,15 +8045,17 @@ WERROR _spoolss_AddPrinterDriverEx(struct pipes_struct *p, > return WERR_UNKNOWN_LEVEL; > } > >- DEBUG(5,("Cleaning driver's information\n")); >- err = clean_up_driver_struct(p->mem_ctx, p->session_info, r->in.info_ctr); >- if (!W_ERROR_IS_OK(err)) >- goto done; >+ if (r->in.flags != APD_SKIP_FILES) { >+ DEBUG(5,("Cleaning driver's information\n")); >+ err = clean_up_driver_struct(p->mem_ctx, p->session_info, r->in.info_ctr); >+ if (!W_ERROR_IS_OK(err)) >+ goto done; > >- DEBUG(5,("Moving driver to final destination\n")); >- err = move_driver_to_download_area(p->session_info, r->in.info_ctr); >- if (!W_ERROR_IS_OK(err)) { >- goto done; >+ DEBUG(5,("Moving driver to final destination\n")); >+ err = move_driver_to_download_area(p->session_info, r->in.info_ctr); >+ if (!W_ERROR_IS_OK(err)) { >+ goto done; >+ } > } > > err = winreg_add_driver(p->mem_ctx, >-- >1.7.1 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 8214
:
6550
| 6554 |
6639
|
6677