[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-46-g05459cf

Günther Deschner gd at samba.org
Tue Jun 23 22:37:51 GMT 2009


The branch, master has been updated
       via  05459cf833aebc8402ef9b58580aa05e0b5f653f (commit)
       via  118ac25784dba37e135ed427ab347107bf8fc8e9 (commit)
      from  a6ab195d72ab5b986f278662f1fbbb5d983effec (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 05459cf833aebc8402ef9b58580aa05e0b5f653f
Author: Günther Deschner <gd at samba.org>
Date:   Tue Jun 23 20:27:05 2009 +0200

    s3-printing: eliminate another non sec_initial_uid using security check.
    
    Guenther

commit 118ac25784dba37e135ed427ab347107bf8fc8e9
Author: Günther Deschner <gd at samba.org>
Date:   Tue Jun 23 20:26:27 2009 +0200

    s3-spoolss: restructure _spoolss_EndDocPrinter().
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 source3/printing/nt_printing.c      |    2 +-
 source3/rpc_server/srv_spoolss_nt.c |   62 ++++++++++++++++++-----------------
 2 files changed, 33 insertions(+), 31 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c
index f496ae5..3e206be 100644
--- a/source3/printing/nt_printing.c
+++ b/source3/printing/nt_printing.c
@@ -2532,7 +2532,7 @@ uint32 del_a_printer(const char *sharename)
 
 	close_all_print_db();
 
-	if (geteuid() == 0) {
+	if (geteuid() == sec_initial_uid()) {
 		if (asprintf(&printdb_path, "%s%s.tdb",
 				cache_path("printing/"),
 				sharename) < 0) {
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index f710994..899fed2 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -1995,31 +1995,6 @@ static bool convert_printer_driver_info(const struct spoolss_AddDriverInfoCtr *r
 	return true;
 }
 
-/********************************************************************
- * _spoolss_enddocprinter_internal.
- ********************************************************************/
-
-static WERROR _spoolss_enddocprinter_internal(pipes_struct *p,
-					      struct policy_handle *handle)
-{
-	Printer_entry *Printer = find_printer_index_by_hnd(p, handle);
-	int snum;
-
-	if (!Printer) {
-		DEBUG(2,("_spoolss_enddocprinter_internal: Invalid handle (%s:%u:%u)\n", OUR_HANDLE(handle)));
-		return WERR_BADFID;
-	}
-
-	if (!get_printer_snum(p, handle, &snum, NULL))
-		return WERR_BADFID;
-
-	Printer->document_started = false;
-	print_job_end(snum, Printer->jobid,NORMAL_CLOSE);
-	/* error codes unhandled so far ... */
-
-	return WERR_OK;
-}
-
 /****************************************************************
  _spoolss_ClosePrinter
 ****************************************************************/
@@ -2029,8 +2004,13 @@ WERROR _spoolss_ClosePrinter(pipes_struct *p,
 {
 	Printer_entry *Printer = find_printer_index_by_hnd(p, r->in.handle);
 
-	if (Printer && Printer->document_started)
-		_spoolss_enddocprinter_internal(p, r->in.handle);          /* print job was not closed */
+	if (Printer && Printer->document_started) {
+		struct spoolss_EndDocPrinter e;
+
+		e.in.handle = r->in.handle;
+
+		_spoolss_EndDocPrinter(p, &e);
+	}
 
 	if (!close_printer_handle(p, r->in.handle))
 		return WERR_BADFID;
@@ -2055,8 +2035,13 @@ WERROR _spoolss_DeletePrinter(pipes_struct *p,
 	Printer_entry *Printer = find_printer_index_by_hnd(p, r->in.handle);
 	WERROR result;
 
-	if (Printer && Printer->document_started)
-		_spoolss_enddocprinter_internal(p, r->in.handle);  /* print job was not closed */
+	if (Printer && Printer->document_started) {
+		struct spoolss_EndDocPrinter e;
+
+		e.in.handle = r->in.handle;
+
+		_spoolss_EndDocPrinter(p, &e);
+	}
 
 	result = delete_printer_handle(p, r->in.handle);
 
@@ -5659,7 +5644,24 @@ WERROR _spoolss_StartDocPrinter(pipes_struct *p,
 WERROR _spoolss_EndDocPrinter(pipes_struct *p,
 			      struct spoolss_EndDocPrinter *r)
 {
-	return _spoolss_enddocprinter_internal(p, r->in.handle);
+	Printer_entry *Printer = find_printer_index_by_hnd(p, r->in.handle);
+	int snum;
+
+	if (!Printer) {
+		DEBUG(2,("_spoolss_EndDocPrinter: 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;
+	}
+
+	Printer->document_started = false;
+	print_job_end(snum, Printer->jobid, NORMAL_CLOSE);
+	/* error codes unhandled so far ... */
+
+	return WERR_OK;
 }
 
 /****************************************************************


-- 
Samba Shared Repository


More information about the samba-cvs mailing list