import cups-2.2.6-35.el8

This commit is contained in:
CentOS Sources 2020-04-24 03:06:24 +00:00 committed by Andrew Lukoshko
parent 78169470c3
commit ccf9b37f8c
4 changed files with 118 additions and 34 deletions

View File

@ -0,0 +1,10 @@
diff --git a/scheduler/org.cups.cupsd.service.in b/scheduler/org.cups.cupsd.service.in
index 307d69b..add238b 100644
--- a/scheduler/org.cups.cupsd.service.in
+++ b/scheduler/org.cups.cupsd.service.in
@@ -10,4 +10,4 @@ Restart=on-failure
[Install]
Also=cups.socket cups.path
-WantedBy=printer.target
+WantedBy=printer.target multi-user.target

View File

@ -401,7 +401,7 @@ index 464c09a..cb67468 100644
} }
} }
diff --git a/cups/ppd.c b/cups/ppd.c diff --git a/cups/ppd.c b/cups/ppd.c
index 8276988..db849ac 100644 index 8276988..6782a85 100644
--- a/cups/ppd.c --- a/cups/ppd.c
+++ b/cups/ppd.c +++ b/cups/ppd.c
@@ -34,8 +34,6 @@ @@ -34,8 +34,6 @@
@ -571,7 +571,7 @@ index 8276988..db849ac 100644
/* /*
* Allocate memory for the PPD file record... * Allocate memory for the PPD file record...
*/ */
@@ -651,8 +628,8 @@ _ppdOpen( @@ -651,12 +628,15 @@ _ppdOpen(
{ {
pg->ppd_status = PPD_ALLOC_ERROR; pg->ppd_status = PPD_ALLOC_ERROR;
@ -582,7 +582,14 @@ index 8276988..db849ac 100644
return (NULL); return (NULL);
} }
@@ -735,6 +712,8 @@ _ppdOpen(
+ free(string);
+ string = NULL;
+
ppd->language_level = 2;
ppd->color_device = 0;
ppd->colorspace = PPD_CS_N;
@@ -735,6 +715,8 @@ _ppdOpen(
strncmp(ll, keyword, ll_len))) strncmp(ll, keyword, ll_len)))
{ {
DEBUG_printf(("2_ppdOpen: Ignoring localization: \"%s\"\n", keyword)); DEBUG_printf(("2_ppdOpen: Ignoring localization: \"%s\"\n", keyword));
@ -591,7 +598,7 @@ index 8276988..db849ac 100644
continue; continue;
} }
else if (localization == _PPD_LOCALIZATION_ICC_PROFILES) else if (localization == _PPD_LOCALIZATION_ICC_PROFILES)
@@ -754,6 +733,8 @@ _ppdOpen( @@ -754,6 +736,8 @@ _ppdOpen(
if (i >= (int)(sizeof(color_keywords) / sizeof(color_keywords[0]))) if (i >= (int)(sizeof(color_keywords) / sizeof(color_keywords[0])))
{ {
DEBUG_printf(("2_ppdOpen: Ignoring localization: \"%s\"\n", keyword)); DEBUG_printf(("2_ppdOpen: Ignoring localization: \"%s\"\n", keyword));
@ -600,7 +607,7 @@ index 8276988..db849ac 100644
continue; continue;
} }
} }
@@ -849,7 +830,7 @@ _ppdOpen( @@ -849,7 +833,7 @@ _ppdOpen(
* Say all PPD files are UTF-8, since we convert to UTF-8... * Say all PPD files are UTF-8, since we convert to UTF-8...
*/ */
@ -609,7 +616,7 @@ index 8276988..db849ac 100644
encoding = _ppdGetEncoding(string); encoding = _ppdGetEncoding(string);
} }
else if (!strcmp(keyword, "LanguageVersion")) else if (!strcmp(keyword, "LanguageVersion"))
@@ -870,10 +851,10 @@ _ppdOpen( @@ -870,10 +854,10 @@ _ppdOpen(
cupsCharsetToUTF8(utf8, string, sizeof(utf8), encoding); cupsCharsetToUTF8(utf8, string, sizeof(utf8), encoding);
@ -622,7 +629,7 @@ index 8276988..db849ac 100644
} }
else if (!strcmp(keyword, "Product")) else if (!strcmp(keyword, "Product"))
ppd->product = string; ppd->product = string;
@@ -883,17 +864,17 @@ _ppdOpen( @@ -883,17 +867,17 @@ _ppdOpen(
ppd->ttrasterizer = string; ppd->ttrasterizer = string;
else if (!strcmp(keyword, "JCLBegin")) else if (!strcmp(keyword, "JCLBegin"))
{ {
@ -643,7 +650,7 @@ index 8276988..db849ac 100644
ppd_decode(ppd->jcl_ps); /* Decode quoted string */ ppd_decode(ppd->jcl_ps); /* Decode quoted string */
} }
else if (!strcmp(keyword, "AccurateScreensSupport")) else if (!strcmp(keyword, "AccurateScreensSupport"))
@@ -961,10 +942,10 @@ _ppdOpen( @@ -961,10 +945,10 @@ _ppdOpen(
ppd->num_filters ++; ppd->num_filters ++;
/* /*
@ -656,7 +663,7 @@ index 8276988..db849ac 100644
} }
else if (!strcmp(keyword, "Throughput")) else if (!strcmp(keyword, "Throughput"))
ppd->throughput = atoi(string); ppd->throughput = atoi(string);
@@ -987,7 +968,7 @@ _ppdOpen( @@ -987,7 +971,7 @@ _ppdOpen(
} }
ppd->fonts = tempfonts; ppd->fonts = tempfonts;
@ -665,7 +672,7 @@ index 8276988..db849ac 100644
ppd->num_fonts ++; ppd->num_fonts ++;
} }
else if (!strncmp(keyword, "ParamCustom", 11)) else if (!strncmp(keyword, "ParamCustom", 11))
@@ -1152,7 +1133,7 @@ _ppdOpen( @@ -1152,7 +1136,7 @@ _ppdOpen(
strlcpy(choice->text, text[0] ? text : _("Custom"), strlcpy(choice->text, text[0] ? text : _("Custom"),
sizeof(choice->text)); sizeof(choice->text));
@ -674,13 +681,12 @@ index 8276988..db849ac 100644
if (custom_option->section == PPD_ORDER_JCL) if (custom_option->section == PPD_ORDER_JCL)
ppd_decode(choice->code); ppd_decode(choice->code);
@@ -1201,59 +1182,23 @@ _ppdOpen( @@ -1201,59 +1185,23 @@ _ppdOpen(
else if (!strcmp(string, "Plus90")) else if (!strcmp(string, "Plus90"))
ppd->landscape = 90; ppd->landscape = 90;
} }
- else if (!strcmp(keyword, "Emulators") && string) - else if (!strcmp(keyword, "Emulators") && string)
+ else if (!strcmp(keyword, "Emulators") && string && ppd->num_emulations == 0) - {
{
- for (count = 1, sptr = string; sptr != NULL;) - for (count = 1, sptr = string; sptr != NULL;)
- if ((sptr = strchr(sptr, ' ')) != NULL) - if ((sptr = strchr(sptr, ' ')) != NULL)
- { - {
@ -712,7 +718,8 @@ index 8276988..db849ac 100644
- } - }
- } - }
- else if (!strncmp(keyword, "StartEmulator_", 14)) - else if (!strncmp(keyword, "StartEmulator_", 14))
- { + else if (!strcmp(keyword, "Emulators") && string && ppd->num_emulations == 0)
{
- ppd_decode(string); - ppd_decode(string);
+ /* + /*
+ * Issue #5562: Samsung printer drivers incorrectly use Emulators keyword + * Issue #5562: Samsung printer drivers incorrectly use Emulators keyword
@ -748,7 +755,7 @@ index 8276988..db849ac 100644
} }
else if (!strcmp(keyword, "JobPatchFile")) else if (!strcmp(keyword, "JobPatchFile"))
{ {
@@ -1408,7 +1353,7 @@ _ppdOpen( @@ -1408,7 +1356,7 @@ _ppdOpen(
option->section = PPD_ORDER_ANY; option->section = PPD_ORDER_ANY;
@ -757,7 +764,7 @@ index 8276988..db849ac 100644
string = NULL; string = NULL;
/* /*
@@ -1436,7 +1381,7 @@ _ppdOpen( @@ -1436,7 +1384,7 @@ _ppdOpen(
strlcpy(choice->text, strlcpy(choice->text,
custom_attr->text[0] ? custom_attr->text : _("Custom"), custom_attr->text[0] ? custom_attr->text : _("Custom"),
sizeof(choice->text)); sizeof(choice->text));
@ -766,7 +773,7 @@ index 8276988..db849ac 100644
} }
} }
else if (!strcmp(keyword, "JCLOpenUI")) else if (!strcmp(keyword, "JCLOpenUI"))
@@ -1515,7 +1460,7 @@ _ppdOpen( @@ -1515,7 +1463,7 @@ _ppdOpen(
option->section = PPD_ORDER_JCL; option->section = PPD_ORDER_JCL;
group = NULL; group = NULL;
@ -775,7 +782,7 @@ index 8276988..db849ac 100644
string = NULL; string = NULL;
/* /*
@@ -1539,14 +1484,14 @@ _ppdOpen( @@ -1539,14 +1487,14 @@ _ppdOpen(
strlcpy(choice->text, strlcpy(choice->text,
custom_attr->text[0] ? custom_attr->text : _("Custom"), custom_attr->text[0] ? custom_attr->text : _("Custom"),
sizeof(choice->text)); sizeof(choice->text));
@ -792,7 +799,7 @@ index 8276988..db849ac 100644
string = NULL; string = NULL;
} }
else if (!strcmp(keyword, "OpenGroup")) else if (!strcmp(keyword, "OpenGroup"))
@@ -1593,14 +1538,14 @@ _ppdOpen( @@ -1593,14 +1541,14 @@ _ppdOpen(
if (group == NULL) if (group == NULL)
goto error; goto error;
@ -809,7 +816,7 @@ index 8276988..db849ac 100644
string = NULL; string = NULL;
} }
else if (!strcmp(keyword, "OrderDependency")) else if (!strcmp(keyword, "OrderDependency"))
@@ -1658,7 +1603,7 @@ _ppdOpen( @@ -1658,7 +1606,7 @@ _ppdOpen(
option->order = order; option->order = order;
} }
@ -818,7 +825,7 @@ index 8276988..db849ac 100644
string = NULL; string = NULL;
} }
else if (!strncmp(keyword, "Default", 7)) else if (!strncmp(keyword, "Default", 7))
@@ -1901,7 +1846,7 @@ _ppdOpen( @@ -1901,7 +1849,7 @@ _ppdOpen(
* Don't add this one as an attribute... * Don't add this one as an attribute...
*/ */
@ -827,7 +834,7 @@ index 8276988..db849ac 100644
string = NULL; string = NULL;
} }
else if (!strcmp(keyword, "PaperDimension")) else if (!strcmp(keyword, "PaperDimension"))
@@ -1923,7 +1868,7 @@ _ppdOpen( @@ -1923,7 +1871,7 @@ _ppdOpen(
size->width = (float)_cupsStrScand(string, &sptr, loc); size->width = (float)_cupsStrScand(string, &sptr, loc);
size->length = (float)_cupsStrScand(sptr, NULL, loc); size->length = (float)_cupsStrScand(sptr, NULL, loc);
@ -836,7 +843,7 @@ index 8276988..db849ac 100644
string = NULL; string = NULL;
} }
else if (!strcmp(keyword, "ImageableArea")) else if (!strcmp(keyword, "ImageableArea"))
@@ -1947,7 +1892,7 @@ _ppdOpen( @@ -1947,7 +1895,7 @@ _ppdOpen(
size->right = (float)_cupsStrScand(sptr, &sptr, loc); size->right = (float)_cupsStrScand(sptr, &sptr, loc);
size->top = (float)_cupsStrScand(sptr, NULL, loc); size->top = (float)_cupsStrScand(sptr, NULL, loc);
@ -845,7 +852,7 @@ index 8276988..db849ac 100644
string = NULL; string = NULL;
} }
else if (option != NULL && else if (option != NULL &&
@@ -2003,7 +1948,7 @@ _ppdOpen( @@ -2003,7 +1951,7 @@ _ppdOpen(
(mask & (PPD_KEYWORD | PPD_STRING)) == (PPD_KEYWORD | PPD_STRING)) (mask & (PPD_KEYWORD | PPD_STRING)) == (PPD_KEYWORD | PPD_STRING))
ppd_add_attr(ppd, keyword, name, text, string); ppd_add_attr(ppd, keyword, name, text, string);
else else
@ -854,7 +861,7 @@ index 8276988..db849ac 100644
} }
/* /*
@@ -2016,7 +1961,8 @@ _ppdOpen( @@ -2016,7 +1964,8 @@ _ppdOpen(
goto error; goto error;
} }
@ -864,7 +871,7 @@ index 8276988..db849ac 100644
/* /*
* Reset language preferences... * Reset language preferences...
@@ -2098,8 +2044,8 @@ _ppdOpen( @@ -2098,8 +2047,8 @@ _ppdOpen(
error: error:
@ -875,7 +882,7 @@ index 8276988..db849ac 100644
ppdClose(ppd); ppdClose(ppd);
@@ -2537,9 +2483,9 @@ ppd_free_filters(ppd_file_t *ppd) /* I - PPD file */ @@ -2537,9 +2486,9 @@ ppd_free_filters(ppd_file_t *ppd) /* I - PPD file */
if (ppd->num_filters > 0) if (ppd->num_filters > 0)
{ {
for (i = ppd->num_filters, filter = ppd->filters; i > 0; i --, filter ++) for (i = ppd->num_filters, filter = ppd->filters; i > 0; i --, filter ++)
@ -887,7 +894,7 @@ index 8276988..db849ac 100644
ppd->num_filters = 0; ppd->num_filters = 0;
ppd->filters = NULL; ppd->filters = NULL;
@@ -2566,7 +2512,7 @@ ppd_free_group(ppd_group_t *group) /* I - Group to free */ @@ -2566,7 +2515,7 @@ ppd_free_group(ppd_group_t *group) /* I - Group to free */
i --, option ++) i --, option ++)
ppd_free_option(option); ppd_free_option(option);
@ -896,7 +903,7 @@ index 8276988..db849ac 100644
} }
if (group->num_subgroups > 0) if (group->num_subgroups > 0)
@@ -2576,7 +2522,7 @@ ppd_free_group(ppd_group_t *group) /* I - Group to free */ @@ -2576,7 +2525,7 @@ ppd_free_group(ppd_group_t *group) /* I - Group to free */
i --, subgroup ++) i --, subgroup ++)
ppd_free_group(subgroup); ppd_free_group(subgroup);
@ -905,7 +912,7 @@ index 8276988..db849ac 100644
} }
} }
@@ -2598,10 +2544,10 @@ ppd_free_option(ppd_option_t *option) /* I - Option to free */ @@ -2598,10 +2547,10 @@ ppd_free_option(ppd_option_t *option) /* I - Option to free */
i > 0; i > 0;
i --, choice ++) i --, choice ++)
{ {
@ -918,7 +925,7 @@ index 8276988..db849ac 100644
} }
} }
@@ -3338,7 +3284,7 @@ ppd_read(cups_file_t *fp, /* I - File to read from */ @@ -3338,7 +3287,7 @@ ppd_read(cups_file_t *fp, /* I - File to read from */
lineptr ++; lineptr ++;
} }
@ -927,7 +934,7 @@ index 8276988..db849ac 100644
mask |= PPD_STRING; mask |= PPD_STRING;
} }
@@ -3460,7 +3406,7 @@ ppd_update_filters(ppd_file_t *ppd, /* I - PPD file */ @@ -3460,7 +3409,7 @@ ppd_update_filters(ppd_file_t *ppd, /* I - PPD file */
filter += ppd->num_filters; filter += ppd->num_filters;
ppd->num_filters ++; ppd->num_filters ++;

View File

@ -0,0 +1,42 @@
diff --git a/cups/ppd.c b/cups/ppd.c
index ff52df2e..199cf034 100644
--- a/cups/ppd.c
+++ b/cups/ppd.c
@@ -1719,8 +1719,7 @@ _ppdOpen(
constraint->choice1, constraint->option2,
constraint->choice2))
{
- case 0 : /* Error */
- case 1 : /* Error */
+ default : /* Error */
pg->ppd_status = PPD_BAD_UI_CONSTRAINTS;
goto error;
diff --git a/ppdc/ppdc-source.cxx b/ppdc/ppdc-source.cxx
index c25d4966..236c00db 100644
--- a/ppdc/ppdc-source.cxx
+++ b/ppdc/ppdc-source.cxx
@@ -1743,15 +1743,17 @@ ppdcSource::get_resolution(ppdcFile *fp)// I - File to read
switch (sscanf(name, "%dx%d", &xdpi, &ydpi))
{
- case 0 :
- _cupsLangPrintf(stderr,
- _("ppdc: Bad resolution name \"%s\" on line %d of "
- "%s."), name, fp->line, fp->filename);
- break;
case 1 :
ydpi = xdpi;
break;
- }
+ case 2 :
+ break;
+ default :
+ _cupsLangPrintf(stderr,
+ _("ppdc: Bad resolution name \"%s\" on line %d of "
+ "%s."), name, fp->line, fp->filename);
+ break;
+}
// Create the necessary PS commands...
snprintf(command, sizeof(command),

View File

@ -15,7 +15,7 @@ Summary: CUPS printing system
Name: cups Name: cups
Epoch: 1 Epoch: 1
Version: 2.2.6 Version: 2.2.6
Release: 33%{?dist} Release: 35%{?dist}
License: GPLv2+ and LGPLv2 with exceptions and AML License: GPLv2+ and LGPLv2 with exceptions and AML
Url: http://www.cups.org/ Url: http://www.cups.org/
Source0: https://github.com/apple/cups/releases/download/v%{VERSION}/cups-%{VERSION}-source.tar.gz Source0: https://github.com/apple/cups/releases/download/v%{VERSION}/cups-%{VERSION}-source.tar.gz
@ -89,6 +89,10 @@ Patch50: cups-do-not-advertise-http-methods.patch
Patch51: 0001-Multiple-security-disclosure-issues.patch Patch51: 0001-Multiple-security-disclosure-issues.patch
# 1775668 - cupsd eats a lot of memory when lots of queue with extensive PPDs are created # 1775668 - cupsd eats a lot of memory when lots of queue with extensive PPDs are created
Patch52: cups-memory-consumption.patch Patch52: cups-memory-consumption.patch
# 1784884 - cups.service doesn't execute automatically on request
Patch53: cups-autostart-when-enabled.patch
# 1825253 - CVE-2020-3898 cups: heap based buffer overflow in libcups's ppdFindOption() in ppd-mark.c
Patch54: cups-ppdopen-heap-overflow.patch
Patch100: cups-lspp.patch Patch100: cups-lspp.patch
@ -321,6 +325,10 @@ Sends IPP requests to the specified URI and tests and/or displays the results.
%patch51 -p1 -b .cve-in-scheduler %patch51 -p1 -b .cve-in-scheduler
# 1775668 - cupsd eats a lot of memory when lots of queue with extensive PPDs are created # 1775668 - cupsd eats a lot of memory when lots of queue with extensive PPDs are created
%patch52 -p1 -b .memory-consumption %patch52 -p1 -b .memory-consumption
# 1784884 - cups.service doesn't execute automatically on request
%patch53 -p1 -b .autostart-when-enabled
# 1825253 - CVE-2020-3898 cups: heap based buffer overflow in libcups's ppdFindOption() in ppd-mark.c
%patch54 -p1 -b .ppdopen-heap-overflow
sed -i -e '1iMaxLogSize 0' conf/cupsd.conf.in sed -i -e '1iMaxLogSize 0' conf/cupsd.conf.in
@ -516,7 +524,12 @@ do
done done
%endif %endif
%{_bindir}/rm /var/cache/cups/*.data %{_bindir}/rm /var/cache/cups/*.data > /dev/null 2>&1
if [ -e /etc/systemd/system/printer.target.wants/cups.service ]
then
%{_bindir}/systemctl enable cups.service > /dev/null 2>&1
fi
exit 0 exit 0
@ -726,6 +739,18 @@ rm -f %{cups_serverbin}/backend/smb
%{_mandir}/man5/ipptoolfile.5.gz %{_mandir}/man5/ipptoolfile.5.gz
%changelog %changelog
* Tue Apr 21 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.6-35
- 1825254 - CVE-2020-3898 cups: heap based buffer overflow in libcups's ppdFindOption() in ppd-mark.c
* Mon Apr 20 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.6-34
- 1809002 - scriptlet issue, /usr/bin/rm: cannot remove '/var/cache/cups/*.data'
* Thu Apr 09 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.6-34
- 1784884 - cups.service doesn't execute automatically on request
* Wed Apr 08 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.6-34
- 1822135 - _ppdOpen() leaks 'string' variable
* Fri Feb 14 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.6-33 * Fri Feb 14 2020 Zdenek Dohnal <zdohnal@redhat.com> - 1:2.2.6-33
- fix more memory leaks found by coverity in 1775668 - fix more memory leaks found by coverity in 1775668