handling (fixes CVE-2023-34241)
- Fixed hanging of `lpstat` on Solaris (Issue #156)
- Fixed Digest authentication support (Issue #260)
+- Fixed the web interface not showing an error for a non-existent printer
+ (Issue #423)
- Fixed extensive looping in scheduler (Issue #604)
- Fixed printing multiple files on specific printers (Issue #643)
- Fixed printing of jobs with job name longer than 255 chars on older printers (Issue #644)
}
else if (!strncmp(con->uri, "/classes", 8))
{
+ if (strlen(con->uri) > 9 && !cupsdFindClass(con->uri + 9))
+ {
+ if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
+ {
+ cupsdCloseClient(con);
+ return;
+ }
+
+ break;
+ }
+
cupsdSetStringf(&con->command, "%s/cgi-bin/classes.cgi", ServerBin);
- if (con->uri[8] && con->uri[9])
+ if (con->uri[8] && con->uri[9])
cupsdSetString(&con->options, con->uri + 8);
else
cupsdSetString(&con->options, NULL);
}
else if (!strncmp(con->uri, "/printers", 9))
{
+ if (strlen(con->uri) > 10 && !cupsdFindPrinter(con->uri + 10))
+ {
+ if (!cupsdSendError(con, HTTP_STATUS_NOT_FOUND, CUPSD_AUTH_NONE))
+ {
+ cupsdCloseClient(con);
+ return;
+ }
+
+ break;
+ }
+
cupsdSetStringf(&con->command, "%s/cgi-bin/printers.cgi", ServerBin);
if (con->uri[9] && con->uri[10])
cupsdSetString(&con->options, con->uri + 9);