From ef1a0c14ab41c87f133d310c5f976548caf15b9a Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Fri, 20 May 2011 12:36:56 -0700 Subject: [PATCH] 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. --- source3/printing/pcap.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/source3/printing/pcap.c b/source3/printing/pcap.c index 0d6480ce015..dbfbac767af 100644 --- a/source3/printing/pcap.c +++ b/source3/printing/pcap.c @@ -209,6 +209,10 @@ void pcap_cache_reload(void (*post_cache_fill_fn)(void)) 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, ')')); @@ -217,8 +221,7 @@ void pcap_cache_reload(void (*post_cache_fill_fn)(void)) continue; } - if (strlen(p) <= MAXPRINTERLEN && - strlen(p) > strlen(name) && !has_punctuation) { + if (strlen(p) <= MAXPRINTERLEN && *name == '\0' && !has_punctuation) { if (!*comment) { strlcpy(comment, name, sizeof(comment)); } @@ -233,9 +236,6 @@ void pcap_cache_reload(void (*post_cache_fill_fn)(void)) } } - comment[60] = 0; - name[MAXPRINTERLEN] = 0; - if (*name && !pcap_cache_add(name, comment)) { x_fclose(pcap_file); goto done; -- 2.34.1