s3-printing: fix migrate printer code (bug 8618)
authorBjörn Baumbach <bb@sernet.de>
Fri, 18 Nov 2011 17:54:56 +0000 (18:54 +0100)
committerStefan Metzmacher <metze@samba.org>
Wed, 5 Oct 2016 17:19:38 +0000 (19:19 +0200)
Removed path from driver files.
We only need the basenames.
(cherry picked from commit d61993043fcb7676a58658476421f5f4ff1a3fea)
(cherry picked from commit 9f07ef2249dc21eab37cd5888623e6edc84b2b59)

BUG: https://bugzilla.samba.org/show_bug.cgi?id=8618

Reviewed-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Günther Deschner <gd@samba.org>
Autobuild-User(master): Stefan Metzmacher <metze@samba.org>
Autobuild-Date(master): Wed Oct  5 19:19:39 CEST 2016 on sn-devel-144

source3/printing/nt_printing_migrate.c

index eacafa2a5f2cb8d895d6101547c9031462d81db9..f56aa702bf16308a40e484436c0518614d77b3f5 100644 (file)
@@ -3,6 +3,7 @@
  *  RPC Pipe client / server routines
  *
  *  Copyright (c) Andreas Schneider            2010.
+ *  Copyright (C) Bjoern Baumbach <bb@sernet.de> 2011
  *
  *  This program is free software; you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
 #include "librpc/gen_ndr/ndr_security.h"
 #include "rpc_client/cli_winreg_spoolss.h"
 
+static const char *driver_file_basename(const char *file)
+{
+       const char *basefile;
+
+       basefile = strrchr(file, '\\');
+       if (basefile == NULL) {
+               basefile = file;
+       } else {
+               basefile++;
+       }
+
+       return basefile;
+}
+
 NTSTATUS printing_tdb_migrate_form(TALLOC_CTX *mem_ctx,
                                   struct rpc_pipe_client *winreg_pipe,
                                   const char *key_name,
@@ -101,6 +116,7 @@ NTSTATUS printing_tdb_migrate_driver(TALLOC_CTX *mem_ctx,
        WERROR result;
        const char *driver_name;
        uint32_t driver_version;
+       int i;
 
        blob = data_blob_const(data, length);
 
@@ -123,8 +139,19 @@ NTSTATUS printing_tdb_migrate_driver(TALLOC_CTX *mem_ctx,
        ZERO_STRUCT(d3);
        ZERO_STRUCT(a);
 
+       /* remove paths from file names */
+       if (r.dependent_files != NULL) {
+               for (i = 0 ; r.dependent_files[i] != NULL; i++) {
+                       r.dependent_files[i] = driver_file_basename(r.dependent_files[i]);
+               }
+       }
        a.string = r.dependent_files;
 
+       r.driverpath = driver_file_basename(r.driverpath);
+       r.configfile = driver_file_basename(r.configfile);
+       r.datafile = driver_file_basename(r.datafile);
+       r.helpfile = driver_file_basename(r.helpfile);
+
        d3.architecture = r.environment;
        d3.config_file = r.configfile;
        d3.data_file = r.datafile;