From 79ddcfc58ed4265ebfefb518d49f32e1d8432a82 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Thu, 4 May 2017 17:48:42 +0200 Subject: [PATCH] s3:printing: Change to GUID dir if we deal with COPY_FROM_DIRECTORY Signed-off-by: Andreas Schneider --- source3/printing/nt_printing.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c index 1bd6506..a6e25ed 100644 --- a/source3/printing/nt_printing.c +++ b/source3/printing/nt_printing.c @@ -666,6 +666,7 @@ Determine the correct cVersion associated with an architecture and driver static uint32_t get_correct_cversion(struct auth_session_info *session_info, const char *architecture, const char *driverpath_in, + const char *driver_directory, WERROR *perr) { int cversion = -1; @@ -676,6 +677,7 @@ static uint32_t get_correct_cversion(struct auth_session_info *session_info, connection_struct *conn = NULL; char *oldcwd; char *printdollar = NULL; + char *working_dir = NULL; int printdollar_snum; *perr = WERR_INVALID_PARAMETER; @@ -704,12 +706,20 @@ static uint32_t get_correct_cversion(struct auth_session_info *session_info, return -1; } + working_dir = lp_path(talloc_tos(), printdollar_snum); + if (driver_directory != NULL) { + working_dir = talloc_asprintf(talloc_tos(), "%s/%s", + lp_path(talloc_tos(), + printdollar_snum), + driver_directory); + } + nt_status = create_conn_struct_cwd(talloc_tos(), server_event_context(), server_messaging_context(), &conn, printdollar_snum, - lp_path(talloc_tos(), printdollar_snum), + working_dir, session_info, &oldcwd); if (!NT_STATUS_IS_OK(nt_status)) { DEBUG(0,("get_correct_cversion: create_conn_struct " @@ -956,8 +966,11 @@ static WERROR clean_up_driver_struct_level(TALLOC_CTX *mem_ctx, * NT2K: cversion=3 */ - *version = get_correct_cversion(session_info, short_architecture, - *driver_path, &err); + *version = get_correct_cversion(session_info, + short_architecture, + *driver_path, + *driver_directory, + &err); if (*version == -1) { return err; } -- 2.9.3