* Fix from SATOH Fumiyasu for bug 660 (failing to view print
authorGerald Carter <jerry@samba.org>
Thu, 13 Nov 2003 20:16:28 +0000 (20:16 +0000)
committerGerald Carter <jerry@samba.org>
Thu, 13 Nov 2003 20:16:28 +0000 (20:16 +0000)
  jobs) by only enforce the 'max reported print jobs' parameter
  when it is non-zero.

* Fixed bug 338 by making sure that data values are written
  out when we are marshalling an EnumPrinterDataEx() reply.
  This probably fixes other bugs reported against point-n-print
  feature in 3.0.0
(This used to be commit d7026f6d178f6ed531bbf7d681d4efde0828616c)

source3/printing/printing.c
source3/rpc_parse/parse_spoolss.c

index 1a878afb925537b46905233ee80c4ac183afb56d..ef532473ba7f1c326e5e1b4352ce09188305077b 100644 (file)
@@ -849,7 +849,7 @@ static void store_queue_struct(struct tdb_print_db *pdb, struct traverse_struct
        size_t i;
        uint qcount;
 
-       if (max_reported_jobs < pts->qcount)
+       if (max_reported_jobs && (max_reported_jobs < pts->qcount))
                pts->qcount = max_reported_jobs;
        qcount = pts->qcount;
 
@@ -2146,7 +2146,7 @@ static BOOL get_stored_queue_info(struct tdb_print_db *pdb, int snum, int *pcoun
        len = 0;
        for( i  = 0; i < qcount; i++) {
                uint32 qjob, qsize, qpage_count, qstatus, qpriority, qtime;
-               len += tdb_unpack(data.dptr + 4 + len, data.dsize - len, NULL, "ddddddff",
+               len += tdb_unpack(data.dptr + 4 + len, data.dsize - len, "ddddddff",
                                &qjob,
                                &qsize,
                                &qpage_count,
index 65f16414a0a7904f6abae0d68f7a01a10f6b4db0..758131676763ec22a11cb76acfc15fafba05d80a 100644 (file)
@@ -7294,11 +7294,13 @@ static BOOL spoolss_io_printer_enum_values_ctr(const char *desc, prs_struct *ps,
                if (!prs_unistr("valuename", ps, depth, &ctr->values[i].valuename))
                        return False;
                
-               if (UNMARSHALLING(ps) && ctr->values[i].data_len) {
-                       ctr->values[i].data = (uint8 *)prs_alloc_mem(
-                               ps, ctr->values[i].data_len);
-                       if (!ctr->values[i].data)
-                               return False;
+               if ( ctr->values[i].data_len ) {
+                       if ( UNMARSHALLING(ps) ) {
+                               ctr->values[i].data = (uint8 *)prs_alloc_mem(
+                                       ps, ctr->values[i].data_len);
+                               if (!ctr->values[i].data)
+                                       return False;
+                       }
                        if (!prs_uint8s(False, "data", ps, depth, ctr->values[i].data, ctr->values[i].data_len))
                                return False;
                }