]> git.ipfire.org Git - thirdparty/cups.git/commitdiff
Fix HTTP query in web interface (fixes #954) 957/head
authorZdenek Dohnal <zdohnal@redhat.com>
Tue, 14 May 2024 12:03:44 +0000 (14:03 +0200)
committerZdenek Dohnal <zdohnal@redhat.com>
Tue, 14 May 2024 12:03:44 +0000 (14:03 +0200)
We can use `?QUERY=` in URL for searching for destinations
- allow it when checking whether the destination exists.

scheduler/client.c

index 8d1c5cc5d9df9cf297b572a0c4a9c94fcacb68f2..9994f6b5f795f529733ea31143db67a5a87e6a94 100644 (file)
@@ -1105,7 +1105,7 @@ cupsdReadClient(cupsd_client_t *con)      /* I - Client to read from */
              }
              else if (!strncmp(con->uri, "/classes", 8))
              {
-               if (strlen(con->uri) > 9 && !cupsdFindClass(con->uri + 9))
+               if (strlen(con->uri) > 9 && _cups_strncasecmp(con->uri + 9, "?QUERY=", 7) && !cupsdFindClass(con->uri + 9))
                {
                  if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
                  {
@@ -1125,14 +1125,14 @@ cupsdReadClient(cupsd_client_t *con)    /* I - Client to read from */
              else if (!strncmp(con->uri, "/jobs", 5))
              {
                cupsdSetStringf(&con->command, "%s/cgi-bin/jobs.cgi", ServerBin);
-                if (con->uri[5] && con->uri[6])
+               if (con->uri[5] && con->uri[6])
                  cupsdSetString(&con->options, con->uri + 5);
                else
                  cupsdSetString(&con->options, NULL);
              }
-              else if (!strncmp(con->uri, "/printers", 9))
+             else if (!strncmp(con->uri, "/printers", 9))
              {
-               if (strlen(con->uri) > 10 && !cupsdFindPrinter(con->uri + 10))
+               if (strlen(con->uri) > 10 && _cups_strncasecmp(con->uri + 10, "?QUERY=", 7) && !cupsdFindPrinter(con->uri + 10))
                {
                  if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
                  {