diff options
author | Jeremy Allison <jra@samba.org> | 2011-05-20 12:27:02 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2011-05-20 22:52:23 +0200 |
commit | 9f14d10366e291ef635c80f55c095b5c34b6dd73 (patch) | |
tree | a331b84386d78686cf90c6bc45c31c0d6bce6d8a /source3 | |
parent | 95a55e2feabfae3b0874ae9aa2ce716ca0a9ae39 (diff) | |
download | samba-9f14d10366e291ef635c80f55c095b5c34b6dd73.tar.gz samba-9f14d10366e291ef635c80f55c095b5c34b6dd73.tar.bz2 samba-9f14d10366e291ef635c80f55c095b5c34b6dd73.zip |
Fix bug #8157 - std_pcap_cache_reload() fails to parse a cups printcap file correctly.
The parsing code made some strange assumptions about what is a printer
name, and what is a comment.
Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Fri May 20 22:52:23 CEST 2011 on sn-devel-104
Diffstat (limited to 'source3')
-rw-r--r-- | source3/printing/print_standard.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/source3/printing/print_standard.c b/source3/printing/print_standard.c index 6a86d84b1e..c4f9c5b7ae 100644 --- a/source3/printing/print_standard.c +++ b/source3/printing/print_standard.c @@ -93,6 +93,10 @@ bool std_pcap_cache_reload(const char *pcap_name) has_punctuation = (strchr_m(p, ' ') || strchr_m(p, '\t') || + strchr_m(p, '"') || + strchr_m(p, '\'') || + strchr_m(p, ';') || + strchr_m(p, ',') || strchr_m(p, '(') || strchr_m(p, ')')); @@ -101,11 +105,7 @@ bool std_pcap_cache_reload(const char *pcap_name) continue; } - if (strlen(p) <= MAXPRINTERLEN && - strlen(p) > strlen(name) && !has_punctuation) { - if (!*comment) { - strlcpy(comment, name, sizeof(comment)); - } + if (strlen(p) <= MAXPRINTERLEN && *name == '\0' && !has_punctuation) { strlcpy(name, p, sizeof(name)); continue; } @@ -117,9 +117,6 @@ bool std_pcap_cache_reload(const char *pcap_name) } } - comment[60] = 0; - name[MAXPRINTERLEN] = 0; - if (*name && !pcap_cache_add(name, comment, NULL)) { x_fclose(pcap_file); return false; |