summaryrefslogtreecommitdiff
path: root/app-admin/system-config-printer/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2019-12-15 18:09:03 +0000
committerV3n3RiX <venerix@redcorelinux.org>2019-12-15 18:09:03 +0000
commit7bc9c63c9da678a7e6fceb095d56c634afd22c56 (patch)
tree4a67d50a439e9af63947e5f8b6ba3719af98b6c9 /app-admin/system-config-printer/files
parentb284a3168fa91a038925d2ecf5e4791011ea5e7d (diff)
gentoo resync : 15.12.2019
Diffstat (limited to 'app-admin/system-config-printer/files')
-rw-r--r--app-admin/system-config-printer/files/system-config-printer-1.5.12-check-for-null.patch58
-rw-r--r--app-admin/system-config-printer/files/system-config-printer-1.5.12-fix-abrt-in-udev-configure-printer.patch72
2 files changed, 130 insertions, 0 deletions
diff --git a/app-admin/system-config-printer/files/system-config-printer-1.5.12-check-for-null.patch b/app-admin/system-config-printer/files/system-config-printer-1.5.12-check-for-null.patch
new file mode 100644
index 000000000000..1c03bbd193fc
--- /dev/null
+++ b/app-admin/system-config-printer/files/system-config-printer-1.5.12-check-for-null.patch
@@ -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;
+ }
diff --git a/app-admin/system-config-printer/files/system-config-printer-1.5.12-fix-abrt-in-udev-configure-printer.patch b/app-admin/system-config-printer/files/system-config-printer-1.5.12-fix-abrt-in-udev-configure-printer.patch
new file mode 100644
index 000000000000..7aed67584f70
--- /dev/null
+++ b/app-admin/system-config-printer/files/system-config-printer-1.5.12-fix-abrt-in-udev-configure-printer.patch
@@ -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;
+ }