Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package cups-filters for openSUSE:Factory checked in at 2026-02-19 14:19:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/cups-filters (Old) and /work/SRC/openSUSE:Factory/.cups-filters.new.1977 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "cups-filters" Thu Feb 19 14:19:59 2026 rev:62 rq:1333703 version:1.28.17 Changes: -------- --- /work/SRC/openSUSE:Factory/cups-filters/cups-filters.changes 2025-11-20 14:47:39.623486157 +0100 +++ /work/SRC/openSUSE:Factory/.cups-filters.new.1977/cups-filters.changes 2026-02-19 14:20:01.466387807 +0100 @@ -1,0 +2,10 @@ +Thu Feb 12 12:16:20 UTC 2026 - Johannes Meixner <[email protected]> + +- Updated cups-filters-1.28.17-CVE-2024-47175.patch + because the former version caused a regression + "Error about PPD file during 'driverless' printer setup" + (boo#1256868) and + "ppd pull out from [driverless] printer feature broken" + (bsc#1256977) + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cups-filters.spec ++++++ --- /var/tmp/diff_new_pack.eKAUlr/_old 2026-02-19 14:20:03.726480548 +0100 +++ /var/tmp/diff_new_pack.eKAUlr/_new 2026-02-19 14:20:03.730480712 +0100 @@ -1,6 +1,7 @@ # # spec file for package cups-filters # +# Copyright (c) 2026 SUSE LLC # Copyright (c) 2025 SUSE LLC and contributors # # All modifications and additions to the file contributed by third parties @@ -110,6 +111,9 @@ # backported to cups-filters 1.28.17 to fix CVE-2024-47175 # "lack of input sanitization in _ppdCreateFromIPP()" # see https://bugzilla.suse.com/show_bug.cgi?id=1230932 +# and https://bugzilla.suse.com/show_bug.cgi?id=1246533 +# and https://bugzilla.suse.com/show_bug.cgi?id=1256868 +# and https://bugzilla.suse.com/show_bug.cgi?id=1256977 Patch110: cups-filters-1.28.17-CVE-2024-47175.patch # https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=285412 # newer cups code in git does not use qpdf, no upstream handling required ++++++ cups-filters-1.28.17-CVE-2024-47175.patch ++++++ --- /var/tmp/diff_new_pack.eKAUlr/_old 2026-02-19 14:20:03.802483667 +0100 +++ /var/tmp/diff_new_pack.eKAUlr/_new 2026-02-19 14:20:03.806483831 +0100 @@ -1,14 +1,5 @@ ---- cups-filters-1.28.17.original/cupsfilters/ppdgenerator.c 2023-01-25 02:41:08.000000000 +0100 -+++ cups-filters-1.28.17.patched/cupsfilters/ppdgenerator.c 2025-09-17 10:16:21.157012186 +0200 -@@ -67,7 +67,7 @@ - * than CUPS 2.2.x. We have also an additional test and development - * platform for this code. Taken from cups/ppd-cache.c, - * cups/string-private.h, cups/string.c. -- * -+ * - * The advantage of PPD generation instead of working with System V - * interface scripts is that the print dialogs of the clients do not - * need to ask the printer for its options via IPP. So we have access +--- cups-filters-1.28.17.original/cupsfilters/ppdgenerator.c.orig 2023-01-25 02:41:08.000000000 +0100 ++++ cups-filters-1.28.17.patched/cupsfilters/ppdgenerator.c 2026-02-12 13:05:28.379947106 +0100 @@ -92,6 +92,7 @@ typedef struct _pwg_finishings_s /**** P static void pwg_ppdize_name(const char *ipp, char *name, size_t namesize); static void pwg_ppdize_resolution(ipp_attribute_t *attr, int element, @@ -177,26 +168,7 @@ printer_opt_strings_catalog = optArrayNew(); load_opt_strings_catalog(ippGetString(attr, 0, NULL), printer_opt_strings_catalog); -@@ -1926,18 +1972,8 @@ ppdCreateFromIPP2(char *buffer, - if (attr) format = ippGetString(attr, i, NULL); - /* Add format to list of supported PDLs, skip duplicates */ - if (!cupsArrayFind(pdl_list, (void *)format)) -- cupsArrayAdd(pdl_list, (void *)format); -- if (attr) -- /* Next format in attribute */ -- i ++; -- else { -- /* Find the next format in the string pdl, if there is none left, -- go to the terminating zero */ -- while (!isspace(*format) && *format != ',' && *format != '\0') -- format ++; - while ((isspace(*format) || *format == ',') && *format != '\0') - format ++; -- } - } - } - -@@ -2110,7 +2146,7 @@ ppdCreateFromIPP2(char *buffer, +@@ -2110,7 +2156,7 @@ ppdCreateFromIPP2(char *buffer, if (manual_copies == 1) cupsFilePuts(fp, "*cupsManualCopies: True\n"); @@ -205,7 +177,7 @@ Use "printer-resolution-supported" attribute */ if (common_res == NULL) { if ((attr = ippFindAttribute(response, "printer-resolution-supported", -@@ -2577,13 +2613,15 @@ ppdCreateFromIPP2(char *buffer, +@@ -2577,13 +2623,15 @@ ppdCreateFromIPP2(char *buffer, break; } if (j >= 0) @@ -227,7 +199,7 @@ } cupsFilePuts(fp, "*CloseUI: *InputSlot\n"); } -@@ -2767,11 +2805,8 @@ ppdCreateFromIPP2(char *buffer, +@@ -2767,11 +2815,8 @@ ppdCreateFromIPP2(char *buffer, human_readable = (char *)_cupsLangString(lang, media_types[j][1]); break; } @@ -241,7 +213,7 @@ } cupsFilePuts(fp, "*CloseUI: *MediaType\n"); } -@@ -3204,11 +3239,8 @@ ppdCreateFromIPP2(char *buffer, +@@ -3204,11 +3249,8 @@ ppdCreateFromIPP2(char *buffer, human_readable = lookup_option("output-bin", opt_strings_catalog, printer_opt_strings_catalog); @@ -255,7 +227,7 @@ attr2 = ippFindAttribute(response, "printer-output-tray", IPP_TAG_STRING); for (i = 0; i < count; i ++) { keyword = ippGetString(attr, i, NULL); -@@ -3466,9 +3498,8 @@ ppdCreateFromIPP2(char *buffer, +@@ -3466,9 +3508,8 @@ ppdCreateFromIPP2(char *buffer, human_readable = (char *)_cupsLangString(lang, finishings[j][1]); break; } @@ -267,7 +239,7 @@ cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*StapleLocation %s\"\n", value, keyword, ppd_keyword); } -@@ -3559,9 +3590,8 @@ ppdCreateFromIPP2(char *buffer, +@@ -3559,9 +3600,8 @@ ppdCreateFromIPP2(char *buffer, human_readable = (char *)_cupsLangString(lang, finishings[j][1]); break; } @@ -279,7 +251,7 @@ cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*FoldType %s\"\n", value, keyword, ppd_keyword); } -@@ -3659,9 +3689,8 @@ ppdCreateFromIPP2(char *buffer, +@@ -3659,9 +3699,8 @@ ppdCreateFromIPP2(char *buffer, human_readable = (char *)_cupsLangString(lang, finishings[j][1]); break; } @@ -291,7 +263,7 @@ cupsFilePrintf(fp, "*cupsIPPFinishings %d/%s: \"*PunchMedia %s\"\n", value, keyword, ppd_keyword); } -@@ -3800,8 +3829,9 @@ ppdCreateFromIPP2(char *buffer, +@@ -3800,8 +3839,9 @@ ppdCreateFromIPP2(char *buffer, printer_opt_strings_catalog); if (human_readable == NULL) human_readable = (char *)keyword; @@ -303,7 +275,7 @@ for (finishing_attr = ippFirstAttribute(finishing_col); finishing_attr; finishing_attr = ippNextAttribute(finishing_col)) { if (ippGetValueTag(finishing_attr) == IPP_TAG_BEGIN_COLLECTION) { -@@ -4113,13 +4143,13 @@ ppdCreateFromIPP2(char *buffer, +@@ -4113,13 +4153,13 @@ ppdCreateFromIPP2(char *buffer, if (!preset || !preset_name) continue; @@ -324,7 +296,7 @@ for (member = ippFirstAttribute(preset); member; member = ippNextAttribute(preset)) { -@@ -4160,7 +4190,10 @@ ppdCreateFromIPP2(char *buffer, +@@ -4160,7 +4200,10 @@ ppdCreateFromIPP2(char *buffer, ippGetString(ippFindAttribute(fin_col, "finishing-template", IPP_TAG_ZERO), 0, NULL)) != NULL) @@ -336,7 +308,7 @@ } } else if (!strcmp(member_name, "media")) { /* -@@ -4193,14 +4226,14 @@ ppdCreateFromIPP2(char *buffer, +@@ -4193,14 +4236,14 @@ ppdCreateFromIPP2(char *buffer, IPP_TAG_ZERO), 0, NULL)) != NULL) { pwg_ppdize_name(keyword, ppdname, sizeof(ppdname)); @@ -353,7 +325,42 @@ } } else if (!strcmp(member_name, "print-quality")) { /* -@@ -4509,4 +4542,35 @@ pwg_ppdize_resolution( +@@ -4464,15 +4507,29 @@ pwg_ppdize_name(const char *ipp, /* I - + *end; /* End of name buffer */ + + ++ if (!ipp || !isalnum(*ipp)) ++ { ++ *name = '\0'; ++ return; ++ } ++ + *name = (char)toupper(*ipp++); + +- for (ptr = name + 1, end = name + namesize - 1; *ipp && ptr < end;) { +- if (*ipp == '-') { ++ for (ptr = name + 1, end = name + namesize - 1; *ipp && ptr < end;) ++ { ++ if (*ipp == '-' && isalnum(ipp[1])) ++ { + ipp ++; +- if (_cups_isalpha(*ipp)) +- *ptr++ = (char)toupper(*ipp++ & 255); +- } else ++ *ptr++ = (char)toupper(*ipp++ & 255); ++ } ++ else if (*ipp == '_' || *ipp == '.' || *ipp == '-' || isalnum(*ipp)) ++ { + *ptr++ = *ipp++; ++ } ++ else ++ { ++ ipp ++; ++ } + } + + *ptr = '\0'; +@@ -4509,4 +4566,35 @@ pwg_ppdize_resolution( snprintf(name, namesize, "%dx%ddpi", *xres, *yres); } }
