printing: convert get_correct_cversion() to use create_conn_struct_tos_cwd()
authorStefan Metzmacher <metze@samba.org>
Thu, 24 May 2018 15:55:02 +0000 (17:55 +0200)
committerStefan Metzmacher <metze@samba.org>
Thu, 14 Jun 2018 18:52:22 +0000 (20:52 +0200)
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/printing/nt_printing.c

index 9d1a18213cbde55e6f4a81ae980d08b97e6bd772..bda72f88dd2860976ea9e4a8fb548a5ab036548f 100644 (file)
@@ -991,8 +991,8 @@ static uint32_t get_correct_cversion(const struct auth_session_info *session_inf
        NTSTATUS          nt_status;
        struct smb_filename *smb_fname = NULL;
        files_struct      *fsp = NULL;
+       struct conn_struct_tos *c = NULL;
        connection_struct *conn = NULL;
-       struct smb_filename *oldcwd_fname = NULL;
        char *printdollar = NULL;
        char *printdollar_path = NULL;
        char *working_dir = NULL;
@@ -1050,13 +1050,11 @@ static uint32_t get_correct_cversion(const struct auth_session_info *session_inf
                                              driver_directory);
        }
 
-       nt_status = create_conn_struct_cwd(frame,
-                                          server_event_context(),
-                                          server_messaging_context(),
-                                          &conn,
-                                          printdollar_snum,
-                                          working_dir,
-                                          session_info, &oldcwd_fname);
+       nt_status = create_conn_struct_tos_cwd(server_messaging_context(),
+                                              printdollar_snum,
+                                              working_dir,
+                                              session_info,
+                                              &c);
        if (!NT_STATUS_IS_OK(nt_status)) {
                DEBUG(0,("get_correct_cversion: create_conn_struct "
                         "returned %s\n", nt_errstr(nt_status)));
@@ -1064,6 +1062,7 @@ static uint32_t get_correct_cversion(const struct auth_session_info *session_inf
                TALLOC_FREE(frame);
                return -1;
        }
+       conn = c->conn;
 
        nt_status = set_conn_force_user_group(conn, printdollar_snum);
        if (!NT_STATUS_IS_OK(nt_status)) {
@@ -1173,11 +1172,6 @@ static uint32_t get_correct_cversion(const struct auth_session_info *session_inf
        if (fsp != NULL) {
                close_file(NULL, fsp, NORMAL_CLOSE);
        }
-       if (conn != NULL) {
-               vfs_ChDir(conn, oldcwd_fname);
-               SMB_VFS_DISCONNECT(conn);
-               conn_free(conn);
-       }
        if (!W_ERROR_IS_OK(*perr)) {
                cversion = -1;
        }