system-config-printer ver. bump

This commit is contained in:
Rmys
2020-09-10 11:05:35 +03:00
parent 0ba4b56d3f
commit e43945f794
3 changed files with 141 additions and 2 deletions
@@ -0,0 +1,58 @@
From cf9903466c1a2d18a701f3b5e8c7e03483e1244d Mon Sep 17 00:00:00 2001
From: Zdenek Dohnal <zdohnal@redhat.com>
Date: Mon, 14 Oct 2019 16:39:28 +0200
Subject: [PATCH] udev-configure-printer: Add checks for NULL
---
NEWS | 1 +
udev/udev-configure-printer.c | 12 +++++++++---
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/NEWS b/NEWS
index f4b774e5c..0b53aa8ef 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,6 @@
1.5.13 changes
--------------
+- add checks for NULL in udev-configure-printer (Fedora #1761097)
1.5.12 changes
--------------
diff --git a/udev/udev-configure-printer.c b/udev/udev-configure-printer.c
index 83092fc21..d753bbeaf 100644
--- a/udev/udev-configure-printer.c
+++ b/udev/udev-configure-printer.c
@@ -1411,7 +1411,7 @@ for_each_matching_queue (struct device_uris *device_uris,
const char *printer_state_message = NULL;
int state = 0;
size_t i, l;
- char *this_device_uri_n, *device_uri_n;
+ char *this_device_uri_n = NULL, *device_uri_n = NULL;
const char *ps1, *ps2, *pi1, *pi2;
while (attr && ippGetGroupTag (attr) != IPP_TAG_PRINTER)
@@ -1448,6 +1448,8 @@ for_each_matching_queue (struct device_uris *device_uris,
for (i = 0; i < device_uris->n_uris; i++)
{
device_uri_n = normalize_device_uri(device_uris->uri[i]);
+ if (this_device_uri_n == NULL || device_uri_n == NULL)
+ goto skip;
/* As for the same device different URIs can come out when the
device is accessed via the usblp kernel module or via low-
level USB (libusb) we cannot simply compare URIs, must
@@ -1512,8 +1514,12 @@ for_each_matching_queue (struct device_uris *device_uris,
firstqueue = 0;
skip:
- free(device_uri_n);
- free(this_device_uri_n);
+ if (device_uri_n != NULL)
+ free(device_uri_n);
+ device_uri_n = NULL;
+ if (this_device_uri_n != NULL)
+ free(this_device_uri_n);
+ this_device_uri_n = NULL;
if (!attr)
break;
}
@@ -0,0 +1,72 @@
From b9289dfe105bdb502f183f0afe7a115ecae5f2af Mon Sep 17 00:00:00 2001
From: Zdenek Dohnal <zdohnal@redhat.com>
Date: Fri, 1 Nov 2019 15:55:34 +0100
Subject: [PATCH] Fix abrt in udev-configure-printer
The abrt was due invalid free - several printer models have its normalized uri cropped.
The original pointer from strdup() was lost so its freeing was invalid.
---
udev/udev-configure-printer.c | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
diff --git a/udev/udev-configure-printer.c b/udev/udev-configure-printer.c
index d753bbeaf..a44520f9c 100644
--- a/udev/udev-configure-printer.c
+++ b/udev/udev-configure-printer.c
@@ -1285,7 +1285,8 @@ normalize_device_uri(const char *str_orig)
{
int i, j;
int havespace = 0;
- char *str;
+ char *str = NULL;
+ char *cropped_str = NULL;
if (str_orig == NULL)
return NULL;
@@ -1333,7 +1334,11 @@ normalize_device_uri(const char *str_orig)
(strstr(str, "packard ") == str) ||
(strstr(str, "apollo ") == str) ||
(strstr(str, "usb ") == str))
- str = strchr(str, ' ') + 1;
+ {
+ cropped_str = strdup(strchr(str, ' ') + 1);
+ free(str);
+ str = cropped_str;
+ }
return str;
}
@@ -1448,8 +1453,6 @@ for_each_matching_queue (struct device_uris *device_uris,
for (i = 0; i < device_uris->n_uris; i++)
{
device_uri_n = normalize_device_uri(device_uris->uri[i]);
- if (this_device_uri_n == NULL || device_uri_n == NULL)
- goto skip;
/* As for the same device different URIs can come out when the
device is accessed via the usblp kernel module or via low-
level USB (libusb) we cannot simply compare URIs, must
@@ -1509,17 +1512,21 @@ for_each_matching_queue (struct device_uris *device_uris,
break;
}
}
+ if (device_uri_n != NULL)
+ {
+ free(device_uri_n);
+ device_uri_n = NULL;
+ }
}
firstqueue = 0;
skip:
- if (device_uri_n != NULL)
- free(device_uri_n);
- device_uri_n = NULL;
if (this_device_uri_n != NULL)
+ {
free(this_device_uri_n);
this_device_uri_n = NULL;
+ }
if (!attr)
break;
}
@@ -12,7 +12,7 @@
<IsA>app:gui</IsA>
<Summary>A printer administration tool</Summary>
<Description>system-config-printer is a graphical user interface that allows the user to configure a CUPS print server.</Description>
<Archive sha1sum="2375c76f695165b7b976390abd55aaf721285df8" type="targz">https://github.com/zdohnal/system-config-printer/archive/1.5.11.tar.gz</Archive>
<Archive sha1sum="c6653790bc6861c3367f6bb3813fe61d1e35ac6c" type="targz">https://github.com/OpenPrinting/system-config-printer/archive/1.5.12.tar.gz</Archive>
<AdditionalFiles>
<AdditionalFile target="po/tr.po">tr.po</AdditionalFile>
</AdditionalFiles>
@@ -36,7 +36,9 @@
<Patch level="1">fix-icon.patch</Patch>
<!--make it actually work without libgnome-keyring -->
<!-- <Patch>pass_libgnome_keyring_missing.diff</Patch> -->
<Patch>0001-Fix-constructing-the-auth-dialog.patch</Patch>
<Patch>system-config-printer-1.5.12-check-for-null.patch</Patch>
<Patch>system-config-printer-1.5.12-fix-abrt-in-udev-configure-printer.patch</Patch>
</Patches>
</Source>
@@ -104,6 +106,13 @@
</Package>
<History>
<Update release="12">
<Date>2020-09-08</Date>
<Version>1.5.12</Version>
<Comment>Version bump.</Comment>
<Name>Mustafa Cinasal</Name>
<Email>muscnsl@gmail.com</Email>
</Update>
<Update release="11">
<Date>2020-03-10</Date>
<Version>1.5.11</Version>