diff options
author | Vincent Untz <vuntz@suse.com> | 2012-12-10 10:44:31 +0100 |
---|---|---|
committer | Vincent Untz <vuntz@suse.com> | 2012-12-10 10:44:31 +0100 |
commit | f00aee0b43c31e94087668b23b72e873c660de5e (patch) | |
tree | 3b8c28f2a6eaa254fc1b7522e2b1f1eb0c8b5bc2 | |
parent | 69d9f6e5eefc6dd83e707334e9e59276656f7ed7 (diff) |
Revert "Be stricter when validating printer names"
Apparently, this is way too strict. The lpadmin man page says:
CUPS allows printer names to contain any printable character except
SPACE, TAB, "/", or "#".
So the previous code was (mostly) correct.
This reverts commit 7bf9cbe43ef8f648f308e4760f75c2aa6b61fa8e.
-rw-r--r-- | src/cups.c | 20 |
1 files changed, 9 insertions, 11 deletions
@@ -327,25 +327,23 @@ _cph_cups_is_printer_name_valid_internal (const char *name) int i; int len; - /* Quoting http://www.cups.org/documentation.php/doc-1.1/sam.html#4_1: - * - * The printer name must start with any printable character except - * " ", "/", and "@". It can contain up to 127 letters, numbers, and - * the underscore (_). - * - * The first part is a bit weird, as the second part is more - * restrictive. So we only consider the second part. */ - /* no empty string */ if (!name || name[0] == '\0') return FALSE; len = strlen (name); - if (len > 127) + /* no string that is too long; see comment at the beginning of the + * validation code block */ + if (len > CPH_STR_MAXLEN) return FALSE; + /* only printable characters, no space, no /, no # */ for (i = 0; i < len; i++) { - if (!g_ascii_isalnum (name[i]) && name[i] != '_') + if (!g_ascii_isprint (name[i])) + return FALSE; + if (g_ascii_isspace (name[i])) + return FALSE; + if (name[i] == '/' || name[i] == '#') return FALSE; } |