Tidied up some error returns from printing calls. Still need to map UNIX
authorJeremy Allison <jra@samba.org>
Wed, 23 Aug 2000 23:05:49 +0000 (23:05 +0000)
committerJeremy Allison <jra@samba.org>
Wed, 23 Aug 2000 23:05:49 +0000 (23:05 +0000)
errors to NT error for print job failure returns. Patch from John Reilly at HP.
Jeremy.

source/printing/nt_printing.c
source/printing/printing.c
source/rpc_server/srv_spoolss_nt.c

index 510432ea740d8405af014c60a14e308fcab7203a..7fe21dc7e71d13709a1b62858078a8e9bd90aa5b 100644 (file)
@@ -2170,9 +2170,13 @@ BOOL print_access_check(struct current_user *user, int snum,
 
        /* Get printer name */
        pname = PRINTERNAME(snum);
-       if (!pname || !*pname) pname = SERVICE(snum);
+       if (!pname || !*pname)
+               pname = SERVICE(snum);
 
-       if (!pname || !*pname) return False;
+       if (!pname || !*pname) {
+               errno = EACCES;
+               return False;
+       }
 
        /* Get printer security descriptor */
        nt_printing_getsec(pname, &secdesc);
@@ -2220,6 +2224,9 @@ BOOL print_access_check(struct current_user *user, int snum,
        /* Free mallocated memory */
        free_sec_desc_buf(&secdesc);
 
+       if (!result)
+               errno = EACCES;
+
        return result;
 }
 
index a6dc81b172a6a2d63804cd653369066ecaa6f67a..f5f40d8b9c8c6c7c8fb9d9da51e005aea397aea3 100644 (file)
@@ -622,6 +622,8 @@ int print_job_start(struct current_user *user, int snum, char *jobname)
        int next_jobid;
        extern struct current_user current_user;
 
+       errno = 0;
+
        if (!print_access_check(user, snum, PRINTER_ACE_PRINT)) {
                DEBUG(3, ("job start denied by security descriptor\n"));
                return False;
@@ -713,7 +715,7 @@ int print_job_start(struct current_user *user, int snum, char *jobname)
        }
 
        tdb_writeunlock(tdb);
-       return jobid;
+       return -1;
 }
 
 /****************************************************************************
index a8b948db4a6817ab5ea1a927144aee57cac57301..36a8a1697ce86030fba2a930b17e4cc93240d122 100644 (file)
@@ -2919,19 +2919,16 @@ uint32 _spoolss_startdocprinter(POLICY_HND *handle, uint32 level,
         * server-side code. *nnnnnggggh!*
         */
        
-       if (info_1->p_datatype != 0)
-       {
-               unistr2_to_ascii(datatype, &(info_1->docname), sizeof(datatype));
-               if (strcmp(datatype, "RAW") != 0)
-               {
+       if (info_1->p_datatype != 0) {
+               unistr2_to_ascii(datatype, &info_1->docname, sizeof(datatype));
+               if (strcmp(datatype, "RAW") != 0) {
                        (*jobid)=0;
                        return ERROR_INVALID_DATATYPE;
                }               
        }                
        
        /* get the share number of the printer */
-       if (!get_printer_snum(handle, &snum))
-       {
+       if (!get_printer_snum(handle, &snum)) {
                return ERROR_INVALID_HANDLE;
        }