]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Fix a scheduler crash bug (rdar://42198057)
authorMichael R Sweet <michael.r.sweet@gmail.com>
Mon, 27 Aug 2018 20:43:16 +0000 (16:43 -0400)
committerMichael R Sweet <michael.r.sweet@gmail.com>
Mon, 27 Aug 2018 20:43:16 +0000 (16:43 -0400)
CHANGES.md
scheduler/ipp.c

index abbbcdfc6d171a0f2bba44ccf5ac8eab3e679fb7..1e1e30efc136f2acb0337ff7e3e412da27d8e18a 100644 (file)
@@ -30,6 +30,7 @@ Changes in CUPS v2.3b6
 - The scheduler did not validate that required initial request attributes were
   in the operation group (rdar://41098178)
 - Authentication in the web interface did not work on macOS (rdar://41444473)
+- The scheduler could crash when job history was purged (rdar://42198057)
 - Fixed a memory leak for some IPP (extension) syntaxes.
 
 
index 1fe068f1137f541b5f5f2dca07a8e5a747fbf45f..b472112ee1f45f55b5dd93be6bb0da67ff4d1a34 100644 (file)
@@ -4813,10 +4813,10 @@ copy_job_attrs(cupsd_client_t *con,     /* I - Client connection */
       ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_INTEGER, "job-k-octets", job->koctets);
 
     if (job->name && (!ra || cupsArrayFind(ra, "job-name")))
-      ippAddString(con->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_NAME), "job-name", NULL, job->name);
+      ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_NAME, "job-name", NULL, job->name);
 
     if (job->username && (!ra || cupsArrayFind(ra, "job-originating-user-name")))
-      ippAddString(con->response, IPP_TAG_JOB, IPP_CONST_TAG(IPP_TAG_NAME), "job-originating-user-name", NULL, job->username);
+      ippAddString(con->response, IPP_TAG_JOB, IPP_TAG_NAME, "job-originating-user-name", NULL, job->username);
 
     if (!ra || cupsArrayFind(ra, "job-state"))
       ippAddInteger(con->response, IPP_TAG_JOB, IPP_TAG_ENUM, "job-state", (int)job->state_value);
@@ -4942,9 +4942,9 @@ copy_printer_attrs(
     };
 
     if (printer->type & CUPS_PRINTER_CLASS)
-      ippAddString(con->response, IPP_TAG_PRINTER, IPP_TAG_NAME | IPP_TAG_COPY, "printer-error-policy-supported", NULL, "retry-current-job");
+      ippAddString(con->response, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_NAME), "printer-error-policy-supported", NULL, "retry-current-job");
     else
-      ippAddStrings(con->response, IPP_TAG_PRINTER, IPP_TAG_NAME | IPP_TAG_COPY, "printer-error-policy-supported", sizeof(errors) / sizeof(errors[0]), NULL, errors);
+      ippAddStrings(con->response, IPP_TAG_PRINTER, IPP_CONST_TAG(IPP_TAG_NAME), "printer-error-policy-supported", sizeof(errors) / sizeof(errors[0]), NULL, errors);
   }
 
   if (!ra || cupsArrayFind(ra, "printer-icons"))
@@ -5079,9 +5079,7 @@ copy_subscription_attrs(
        * Simple event list...
        */
 
-       ippAddString(con->response, IPP_TAG_SUBSCRIPTION,
-                    (ipp_tag_t)(IPP_TAG_KEYWORD | IPP_TAG_COPY),
-                    "notify-events", NULL, name);
+       ippAddString(con->response, IPP_TAG_SUBSCRIPTION, IPP_CONST_TAG(IPP_TAG_KEYWORD), "notify-events", NULL, name);
       }
       else
       {
@@ -5093,15 +5091,12 @@ copy_subscription_attrs(
          if (sub->mask & mask)
            count ++;
 
-       attr = ippAddStrings(con->response, IPP_TAG_SUBSCRIPTION,
-                            (ipp_tag_t)(IPP_TAG_KEYWORD | IPP_TAG_COPY),
-                            "notify-events", count, NULL, NULL);
+       attr = ippAddStrings(con->response, IPP_TAG_SUBSCRIPTION, IPP_CONST_TAG(IPP_TAG_KEYWORD), "notify-events", count, NULL, NULL);
 
        for (mask = 1, count = 0; mask < CUPSD_EVENT_ALL; mask <<= 1)
          if (sub->mask & mask)
          {
-           attr->values[count].string.text =
-               (char *)cupsdEventName((cupsd_eventmask_t)mask);
+           attr->values[count].string.text = (char *)cupsdEventName((cupsd_eventmask_t)mask);
 
            count ++;
          }