From 2e3c51880e46355bece4a27b5da0b1f0a90b0c1e Mon Sep 17 00:00:00 2001 From: Zdenek Dohnal Date: Tue, 2 Aug 2022 15:00:23 +0200 Subject: [PATCH] fix invalid pointer during resolving mDNS uri --- ...Allocate-device_uri-via-cupsdSetStri.patch | 36 +++++++++++++++++++ cups.spec | 7 +++- 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 0001-scheduler-ipp.c-Allocate-device_uri-via-cupsdSetStri.patch diff --git a/0001-scheduler-ipp.c-Allocate-device_uri-via-cupsdSetStri.patch b/0001-scheduler-ipp.c-Allocate-device_uri-via-cupsdSetStri.patch new file mode 100644 index 0000000..54147c6 --- /dev/null +++ b/0001-scheduler-ipp.c-Allocate-device_uri-via-cupsdSetStri.patch @@ -0,0 +1,36 @@ +From 020609ad9eb84ab5a4c602ff604b2f208a6cdb8d Mon Sep 17 00:00:00 2001 +From: Zdenek Dohnal +Date: Wed, 22 Jun 2022 09:23:45 +0200 +Subject: [PATCH] scheduler/ipp.c: Allocate device_uri via cupsdSetString() + +If a driverless printer has .local in its URI, we resolve the +URI and save the resolved one as new device URI. The problem was that +a local pointer was assigned to the structure which is passed to the +function as parameter, so the pointer became invalid once the execution +left the create_local_bg_thread() function. + +We need to allocate the device URI via cupsdSetString() - the string is +then freed when the printer is deleted or cupsd shuts down. + +Fixes #419. +--- + CHANGES.md | 1 + + scheduler/ipp.c | 2 +- + 2 files changed, 2 insertions(+), 1 deletion(-) + +diff --git a/scheduler/ipp.c b/scheduler/ipp.c +index 3a849bdb5..b722712f6 100644 +--- a/scheduler/ipp.c ++++ b/scheduler/ipp.c +@@ -5307,7 +5307,7 @@ create_local_bg_thread( + return (NULL); + } + +- printer->device_uri = uri; ++ cupsdSetString(&printer->device_uri, uri); + } + + if (httpSeparateURI(HTTP_URI_CODING_ALL, printer->device_uri, scheme, sizeof(scheme), userpass, sizeof(userpass), host, sizeof(host), &port, resource, sizeof(resource)) < HTTP_URI_STATUS_OK) +-- +2.37.1 + diff --git a/cups.spec b/cups.spec index 63a4a11..816bae3 100644 --- a/cups.spec +++ b/cups.spec @@ -15,7 +15,7 @@ Summary: CUPS printing system Name: cups Epoch: 1 Version: 2.4.2 -Release: 2%{?dist} +Release: 3%{?dist} License: ASL 2.0 Url: https://openprinting.github.io/cups/ # Apple stopped uploading the new versions into github, use OpenPrinting fork @@ -67,6 +67,7 @@ Patch100: cups-lspp.patch %endif #### UPSTREAM PATCHES (starts with 1000) #### +Patch1001: 0001-scheduler-ipp.c-Allocate-device_uri-via-cupsdSetStri.patch ##### Patches removed because IMHO they aren't no longer needed ##### but still I'll leave them in git in case their removal @@ -270,6 +271,7 @@ to CUPS daemon. This solution will substitute printer drivers and raw queues in %patch13 -p1 -b .dymo-deviceid # UPSTREAM PATCHES +%patch1001 -p1 -b .invalid-pointer-uri %if %{lspp} @@ -660,6 +662,9 @@ rm -f %{cups_serverbin}/backend/smb %{_mandir}/man7/ippeveps.7.gz %changelog +* Tue Aug 02 2022 Zdenek Dohnal - 1:2.4.2-3 +- fix invalid pointer during resolving mDNS uri + * Wed Jul 20 2022 Fedora Release Engineering - 1:2.4.2-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild