s3-spoolss: let _spoolss_DeletePrinterData call into _spoolss_DeletePrinterDataEx.
authorGünther Deschner <gd@samba.org>
Mon, 7 Dec 2009 10:28:56 +0000 (11:28 +0100)
committerKarolin Seeger <kseeger@samba.org>
Thu, 6 May 2010 12:08:33 +0000 (14:08 +0200)
Guenther
(cherry picked from commit ef9d6580efc55ee040458b7cd76ebdc2e1276e98)
(cherry picked from commit beeb98c693cba71573b1ff7fc6b0349ea4eda8ca)

source3/rpc_server/srv_spoolss_nt.c

index 9bc477da2c4dc5a0f1839c8181cf1c20fb31fe68..cb8a9694373d03c34750b4fdcd4902b5f594d93a 100644 (file)
@@ -8155,46 +8155,13 @@ WERROR _spoolss_ResetPrinter(pipes_struct *p,
 WERROR _spoolss_DeletePrinterData(pipes_struct *p,
                                  struct spoolss_DeletePrinterData *r)
 {
-       NT_PRINTER_INFO_LEVEL   *printer = NULL;
-       int             snum=0;
-       WERROR          status = WERR_OK;
-       Printer_entry   *Printer = find_printer_index_by_hnd(p, r->in.handle);
-
-       DEBUG(5,("_spoolss_DeletePrinterData\n"));
-
-       if (!Printer) {
-               DEBUG(2,("_spoolss_DeletePrinterData: Invalid handle (%s:%u:%u).\n",
-                       OUR_HANDLE(r->in.handle)));
-               return WERR_BADFID;
-       }
-
-       if (!get_printer_snum(p, r->in.handle, &snum, NULL))
-               return WERR_BADFID;
-
-       if (Printer->access_granted != PRINTER_ACCESS_ADMINISTER) {
-               DEBUG(3, ("_spoolss_DeletePrinterData: "
-                       "printer properties change denied by handle\n"));
-               return WERR_ACCESS_DENIED;
-       }
+       struct spoolss_DeletePrinterDataEx r2;
 
-       status = get_a_printer(Printer, &printer, 2, lp_const_servicename(snum));
-       if (!W_ERROR_IS_OK(status))
-               return status;
-
-       if (!r->in.value_name) {
-               free_a_printer(&printer, 2);
-               return WERR_NOMEM;
-       }
-
-       status = delete_printer_dataex( printer, SPOOL_PRINTERDATA_KEY,
-                                       r->in.value_name );
-
-       if ( W_ERROR_IS_OK(status) )
-               mod_a_printer( printer, 2 );
-
-       free_a_printer(&printer, 2);
+       r2.in.handle            = r->in.handle;
+       r2.in.key_name          = "PrinterDriverData";
+       r2.in.value_name        = r->in.value_name;
 
-       return status;
+       return _spoolss_DeletePrinterDataEx(p, &r2);
 }
 
 /****************************************************************