summaryrefslogtreecommitdiff
path: root/source3/printing
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2011-05-20 12:27:02 -0700
committerJeremy Allison <jra@samba.org>2011-05-20 22:52:23 +0200
commit9f14d10366e291ef635c80f55c095b5c34b6dd73 (patch)
treea331b84386d78686cf90c6bc45c31c0d6bce6d8a /source3/printing
parent95a55e2feabfae3b0874ae9aa2ce716ca0a9ae39 (diff)
downloadsamba-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/printing')
-rw-r--r--source3/printing/print_standard.c13
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;