]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Update the printer/class CGI name check.
authorMichael R Sweet <msweet@msweet.org>
Wed, 21 Jan 2026 17:12:00 +0000 (12:12 -0500)
committerMichael R Sweet <msweet@msweet.org>
Wed, 21 Jan 2026 17:12:00 +0000 (12:12 -0500)
scheduler/client.c

index 63844d531874eaf7b88ecd12172c542954f39c15..31c376f21dbd3999c4c9c1a2bcc2e1780e001ea3 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Client routines for the CUPS scheduler.
  *
- * Copyright © 2020-2025 by OpenPrinting.
+ * Copyright © 2020-2026 by OpenPrinting.
  * Copyright © 2007-2021 by Apple Inc.
  * Copyright © 1997-2007 by Easy Software Products, all rights reserved.
  *
@@ -1142,12 +1142,12 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
                  {
                    unsigned int i = 0; // Array index
 
-                   for (ptr = con->uri + 9; *ptr && *ptr != '?' && i < sizeof(name);)
+                   for (ptr = con->uri + 9; *ptr && *ptr != '?' && i < (sizeof(name) - 1);)
                      name[i++] = *ptr++;
 
                    name[i] = '\0';
 
-                   if (!cupsdFindClass(name))
+                   if ((*ptr && *ptr != '?') || !cupsdFindClass(name))
                    {
                      if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
                      {
@@ -1182,12 +1182,12 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
                  {
                    unsigned int i = 0; // Array index
 
-                   for (ptr = con->uri + 10; *ptr && *ptr != '?' && i < sizeof(name);)
+                   for (ptr = con->uri + 10; *ptr && *ptr != '?' && i < (sizeof(name) - 1);)
                      name[i++] = *ptr++;
 
                    name[i] = '\0';
 
-                   if (!cupsdFindPrinter(name))
+                   if ((*ptr && *ptr != '?') || !cupsdFindPrinter(name))
                    {
                      if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
                      {