summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES.md2
-rw-r--r--cgi-bin/admin.c7
-rw-r--r--systemv/lpadmin.c3
3 files changed, 5 insertions, 7 deletions
diff --git a/CHANGES.md b/CHANGES.md
index 865d4976c..0dc43a055 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -5,6 +5,8 @@ CHANGES - 2.3b1 - 2017-11-01
Changes in CUPS v2.3b1
----------------------
+- No longer support backslash, question mark, or quotes in printer names
+ (Issue #4966)
- Dropped RSS subscription management from the web interface (Issue #5012)
- The lpadmin command now provides a better error message when an unsupported
System V interface script is used (Issue #5111)
diff --git a/cgi-bin/admin.c b/cgi-bin/admin.c
index cfdf3ff01..179a8d68e 100644
--- a/cgi-bin/admin.c
+++ b/cgi-bin/admin.c
@@ -695,16 +695,13 @@ do_am_printer(http_t *http, /* I - HTTP connection */
if ((name = cgiGetVariable("PRINTER_NAME")) != NULL)
{
for (ptr = name; *ptr; ptr ++)
- if ((*ptr >= 0 && *ptr <= ' ') || *ptr == 127 || *ptr == '/' || *ptr == '#')
+ if ((*ptr >= 0 && *ptr <= ' ') || *ptr == 127 || *ptr == '/' || *ptr == '\\' || *ptr == '?' || *ptr == '\'' || *ptr == '\"' || *ptr == '#')
break;
if (*ptr || ptr == name || strlen(name) > 127)
{
cgiSetVariable("ERROR",
- cgiText(_("The printer name may only contain up to "
- "127 printable characters and may not "
- "contain spaces, slashes (/), or the "
- "pound sign (#).")));
+ cgiText(_("The printer name may only contain up to 127 printable characters and may not contain spaces, slashes (/ \\), quotes (' \"), question mark (?), or the pound sign (#).")));
cgiStartHTML(title);
cgiCopyTemplateLang("error.tmpl");
cgiEndHTML();
diff --git a/systemv/lpadmin.c b/systemv/lpadmin.c
index b36ea48c4..48dcd76f6 100644
--- a/systemv/lpadmin.c
+++ b/systemv/lpadmin.c
@@ -1591,8 +1591,7 @@ validate_name(const char *name) /* I - Name to check */
for (ptr = name; *ptr; ptr ++)
if (*ptr == '@')
break;
- else if ((*ptr >= 0 && *ptr <= ' ') || *ptr == 127 || *ptr == '/' ||
- *ptr == '#')
+ else if ((*ptr >= 0 && *ptr <= ' ') || *ptr == 127 || *ptr == '/' || *ptr == '\\' || *ptr == '?' || *ptr == '\'' || *ptr == '\"' || *ptr == '#')
return (0);
/*