forked from pool/hplip
Compare commits
30 Commits
| Author | SHA256 | Date | |
|---|---|---|---|
| 10bfb902d4 | |||
| 7ffbbaa882 | |||
| ee0405583d | |||
| 03fb19a3a4 | |||
| f3d2506529 | |||
| 756b74b309 | |||
| 497ec9ee78 | |||
| c3f7a8c460 | |||
| 23d046f249 | |||
| 6af0bcd0d2 | |||
| 2685c80bcc | |||
| ee64d56499 | |||
| 4f46173b7f | |||
| c69d1bf3db | |||
| 01111b9fc0 | |||
| b2ab3cb1c9 | |||
| 2d0f1b8130 | |||
| 0f6411a364 | |||
| 18d65bd90a | |||
| b4c6de1fe0 | |||
| ecc13f65af | |||
| 55c3139c15 | |||
| 4291a2a098 | |||
| b59d505c60 | |||
| fb006c9b16 | |||
| 1f5e2304f2 | |||
| 6e09f335a7 | |||
| e2859bda9a | |||
| 462d0be98f | |||
| 95e3708c4c |
48
Fix-ReDoS-issue-in-HPLIP-s-SLP-parser.patch
Normal file
48
Fix-ReDoS-issue-in-HPLIP-s-SLP-parser.patch
Normal file
@@ -0,0 +1,48 @@
|
||||
From 4315485efe9318b18bf859c5bf1a810b9235ae2e Mon Sep 17 00:00:00 2001
|
||||
From: Wolfgang Frisch <wfrisch@suse.de>
|
||||
Date: Tue, 15 Jul 2025 19:12:53 +0200
|
||||
Subject: [PATCH] Fix ReDoS issue in HPLIP's SLP parser
|
||||
|
||||
Patch for the ReDoS issue in HPLIP's SLP parser (bsc#1245358).
|
||||
https://bugs.launchpad.net/hplip/+bug/2115626
|
||||
|
||||
An unauthenticated denial-of-service attack in the local network is possible
|
||||
against HPLIP's SLP network printer discovery. This vulnerability arises from
|
||||
an algorithmic complexity attack on regular expressions within the SLP parser
|
||||
(`base/slp.py`).
|
||||
|
||||
Signed-off-by: Wolfgang Frisch <wfrisch@suse.de>
|
||||
---
|
||||
base/slp.py | 16 ++++++++--------
|
||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/base/slp.py b/base/slp.py
|
||||
index 8e2d8f9..06a00aa 100644
|
||||
--- a/base/slp.py
|
||||
+++ b/base/slp.py
|
||||
@@ -33,14 +33,14 @@ from .g import *
|
||||
from . import utils
|
||||
from .sixext import to_bytes_utf8, to_unicode, to_string_utf8
|
||||
|
||||
-prod_pat = re.compile(r"""\(\s*x-hp-prod_id\s*=\s*(.*?)\s*\)""", re.IGNORECASE)
|
||||
-mac_pat = re.compile(r"""\(\s*x-hp-mac\s*=\s*(.*?)\s*\)""", re.IGNORECASE)
|
||||
-num_port_pat = re.compile(r"""\(\s*x-hp-num_port\s*=\s*(.*?)\s*\)""", re.IGNORECASE)
|
||||
-ip_pat = re.compile(r"""\(\s*x-hp-ip\s*=\s*(.*?)\s*\)""", re.IGNORECASE)
|
||||
-p1_pat = re.compile(r"""\(\s*x-hp-p1\s*=(?:\d\)|\s*(.*?)\s*\))""", re.IGNORECASE)
|
||||
-p2_pat = re.compile(r"""\(\s*x-hp-p2\s*=(?:\d\)|\s*(.*?)\s*\))""", re.IGNORECASE)
|
||||
-p3_pat = re.compile(r"""\(\s*x-hp-p3\s*=(?:\d\)|\s*(.*?)\s*\))""", re.IGNORECASE)
|
||||
-hn_pat = re.compile(r"""\(\s*x-hp-hn\s*=\s*(.*?)\s*\)""", re.IGNORECASE)
|
||||
+prod_pat = re.compile(r"""\(\s*x-hp-prod_id\s*=\s*([^\s]*)\s*\)""", re.IGNORECASE)
|
||||
+mac_pat = re.compile(r"""\(\s*x-hp-mac\s*=\s*([^\s]*)\s*\)""", re.IGNORECASE)
|
||||
+num_port_pat = re.compile(r"""\(\s*x-hp-num_port\s*=\s*([^\s]*)\s*\)""", re.IGNORECASE)
|
||||
+ip_pat = re.compile(r"""\(\s*x-hp-ip\s*=\s*([^\s]*)\s*\)""", re.IGNORECASE)
|
||||
+p1_pat = re.compile(r"""\(\s*x-hp-p1\s*=(?:\d\)|\s*([^\s]*)\s*\))""", re.IGNORECASE)
|
||||
+p2_pat = re.compile(r"""\(\s*x-hp-p2\s*=(?:\d\)|\s*([^\s]*)\s*\))""", re.IGNORECASE)
|
||||
+p3_pat = re.compile(r"""\(\s*x-hp-p3\s*=(?:\d\)|\s*([^\s]*)\s*\))""", re.IGNORECASE)
|
||||
+hn_pat = re.compile(r"""\(\s*x-hp-hn\s*=\s*([^\s]*)\s*\)""", re.IGNORECASE)
|
||||
|
||||
def createSocketsWithsetOption(ttl=4):
|
||||
s=None
|
||||
--
|
||||
2.50.0
|
||||
|
||||
@@ -2,7 +2,7 @@ Index: b/data/rules/56-hpmud.rules
|
||||
===================================================================
|
||||
--- a/data/rules/56-hpmud.rules
|
||||
+++ b/data/rules/56-hpmud.rules
|
||||
@@ -1,8 +1,33 @@
|
||||
@@ -1,8 +1,31 @@
|
||||
# HPLIP udev rules file. Notify console user if plugin support is required for this device.
|
||||
+#
|
||||
+# SUSE changed:
|
||||
@@ -27,8 +27,6 @@ Index: b/data/rules/56-hpmud.rules
|
||||
+# is also used to upload firmware into printers that need it
|
||||
+# see https://bugs.launchpad.net/bugs/1220628
|
||||
+# a rule that only uploads firmware into printers that need it is added.
|
||||
+#
|
||||
+# If possible activate hpaio backend support in /etc/sane.d/dll.conf.
|
||||
|
||||
ACTION!="add", GOTO="hpmud_rules_end"
|
||||
-SUBSYSTEM=="ppdev", OWNER="root", GROUP="lp", MODE="0664"
|
||||
@@ -37,7 +35,7 @@ Index: b/data/rules/56-hpmud.rules
|
||||
GOTO="hpmud_rules_end"
|
||||
|
||||
LABEL="hpmud_usb_rules"
|
||||
@@ -13,6 +38,12 @@ ENV{ID_USB_INTERFACES}=="", IMPORT{built
|
||||
@@ -13,6 +38,9 @@ ENV{ID_USB_INTERFACES}=="", IMPORT{built
|
||||
ATTR{idVendor}=="03f0", ENV{ID_USB_INTERFACES}=="*:0701??:*|*:ffcc00:", OWNER="root", GROUP="lp", MODE="0664", ENV{libsane_matched}="yes", ENV{hp_test}="yes", ENV{ID_HPLIP}="1"
|
||||
|
||||
# This rule will check the smart install feature, plugin status and firmware download for the required printers.
|
||||
@@ -45,9 +43,6 @@ Index: b/data/rules/56-hpmud.rules
|
||||
+#ENV{hp_test}=="yes", PROGRAM="/bin/sh -c 'logger -p user.info loading HP Device $env{BUSNUM} $env{DEVNUM}'", RUN+="/bin/sh -c '/usr/bin/nohup /usr/bin/hp-config_usb_printer $env{BUSNUM}:$env{DEVNUM}'"
|
||||
+# This rule uploads firmware to HP USB printer devices if needed:
|
||||
+ENV{hp_test}=="yes", PROGRAM="/bin/logger -p user.info udev hpmud.rules runs hp-firmware to test if HP device with USB vendor ID $attr{idVendor} and USB product ID $attr{idProduct} at USB bus ID $env{BUSNUM} and USB device ID $env{DEVNUM} needs firmware and if yes to upload it", RUN+="/usr/bin/hp-firmware -s $env{BUSNUM}:$env{DEVNUM}"
|
||||
+
|
||||
+# If possible activate hpaio backend support in /etc/sane.d/dll.conf:
|
||||
+ENV{libsane_matched}=="yes", RUN+="/bin/sh -c 'if test -w /etc/sane.d/dll.conf ; then sed -i -e /hpaio/d /etc/sane.d/dll.conf ; echo hpaio >>/etc/sane.d/dll.conf ; fi'"
|
||||
|
||||
LABEL="hpmud_rules_end"
|
||||
+
|
||||
|
||||
28
hp-setup-fix-python-crash-when-manually-importing-gz.patch
Normal file
28
hp-setup-fix-python-crash-when-manually-importing-gz.patch
Normal file
@@ -0,0 +1,28 @@
|
||||
From 216b15eb68bd5cacd26ff554e244fc4ea50a1acf Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Fri, 15 Aug 2025 23:10:44 +0200
|
||||
Subject: [PATCH 1/2] hp-setup: fix python crash when manually importing
|
||||
gzipped PPD
|
||||
|
||||
data read from gzip.GzipFile must be converted to a string, otherwise
|
||||
the subsequent regex match will cause a python stacktrace.
|
||||
---
|
||||
setup.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/setup.py b/setup.py
|
||||
index 2608f95..962909b 100755
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -552,7 +552,7 @@ else: # INTERACTIVE_MODE
|
||||
if os.path.exists(file_path) and os.path.isfile(file_path):
|
||||
|
||||
if file_path.endswith('.gz'):
|
||||
- nickname = gzip.GzipFile(file_path, 'r').read(4096)
|
||||
+ nickname = gzip.GzipFile(file_path, 'r').read(4096).decode("utf-8")
|
||||
else:
|
||||
nickname = open(file_path, 'r').read(4096)
|
||||
|
||||
--
|
||||
2.50.1
|
||||
|
||||
28
hpcups-fix-compilation-on-SLE12.patch
Normal file
28
hpcups-fix-compilation-on-SLE12.patch
Normal file
@@ -0,0 +1,28 @@
|
||||
From e95a9cb2e946bec33d7f0afa04850f93ae258477 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Wed, 7 May 2025 15:53:46 +0200
|
||||
Subject: [PATCH] hpcups: fix compilation on SLE12
|
||||
|
||||
SLE12-SP5 is not using C++11 by default, thus nullptr is not
|
||||
defined. NULL is used elsewhere in the file, so we can just
|
||||
replace nullptr with NULL.
|
||||
---
|
||||
prnt/hpcups/HPCupsFilter.cpp | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/prnt/hpcups/HPCupsFilter.cpp b/prnt/hpcups/HPCupsFilter.cpp
|
||||
index 6750684..7d397ed 100644
|
||||
--- a/prnt/hpcups/HPCupsFilter.cpp
|
||||
+++ b/prnt/hpcups/HPCupsFilter.cpp
|
||||
@@ -435,7 +435,7 @@ DRIVER_ERROR HPCupsFilter::startPage (cups_page_header2_t *cups_header)
|
||||
|
||||
if (m_JA.media_attributes.PageSizeName[0] == '\0') {
|
||||
// Copy the value of cups_header->cupsPageSizeName if it isnot null
|
||||
- if (cups_header->cupsPageSizeName != nullptr) {
|
||||
+ if (cups_header->cupsPageSizeName != NULL) {
|
||||
strncpy(m_JA.media_attributes.PageSizeName, cups_header->cupsPageSizeName, sizeof(m_JA.media_attributes.PageSizeName));
|
||||
}
|
||||
}
|
||||
--
|
||||
2.49.0
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:fb60642e55839c311ee8037bfc739ffc7c77555c176beef5bdbc4f965e322b61
|
||||
size 682
|
||||
16
hplip-3.24.4-gcc15.patch
Normal file
16
hplip-3.24.4-gcc15.patch
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
bugs.launchpad.net/hplip/+bug/2096650
|
||||
|
||||
src.fedoraproject.org/rpms/hplip/blob/f42/f/hplip-gcc15-stdc23.patch
|
||||
|
||||
--- a/scan/sane/ledmi.h 2025-02-27 13:12:29.000000000 +0100
|
||||
+++ b/scan/sane/ledmi.h 2025-05-05 12:28:33.445527226 +0200
|
||||
@@ -162,7 +162,7 @@
|
||||
int bb_open(struct ledm_session*);
|
||||
int bb_close(struct ledm_session*);
|
||||
int bb_get_parameters(struct ledm_session*, SANE_Parameters*, int);
|
||||
-int bb_is_paper_in_adf(); /* 0 = no paper in adf, 1 = paper in adf, -1 = error */
|
||||
+int bb_is_paper_in_adf(struct ledm_session *); /* 0 = no paper in adf, 1 = paper in adf, -1 = error */
|
||||
SANE_Status bb_start_scan(struct ledm_session*);
|
||||
int bb_get_image_data(struct ledm_session*, int);
|
||||
int bb_end_page(struct ledm_session*, int);
|
||||
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:5d7643831893a5e2addf9d42d581a5dbfe5aaf023626886b8762c5645da0f1fb
|
||||
size 30217933
|
||||
@@ -1,6 +0,0 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
|
||||
iF0EABECAB0WIQRKui9m29WpWJSRDgZz13DNpZBHuQUCZk13yQAKCRBz13DNpZBH
|
||||
uc7TAKDAX4308SYP7pgb85UTMbPbhfivmgCghMp2sBrpiCvOZTeozYO4WVzW1mg=
|
||||
=CKxG
|
||||
-----END PGP SIGNATURE-----
|
||||
BIN
hplip-3.25.6.tar.gz
LFS
Normal file
BIN
hplip-3.25.6.tar.gz
LFS
Normal file
Binary file not shown.
11
hplip-3.25.6.tar.gz.asc
Normal file
11
hplip-3.25.6.tar.gz.asc
Normal file
@@ -0,0 +1,11 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2
|
||||
|
||||
iQEcBAABCAAGBQJoekszAAoJEF5OTSSjTs1XCjUH/3W/RawreKnt4IuIqUqHMTJn
|
||||
haeiPj/jdArhbxreCjvYk3Z91VXJ4n2pyVWAwhW8ZKmSzdubDOEUrSs1fiRLF1qe
|
||||
y/wmCSmDF+ZcQu7/QfLDhZQI7I7IOFKNGTNNlWh1z3HpnHqBywPusM8ej8EgEb76
|
||||
6tGLlNuo8ykFDAQNJAPCN/qexj/LUs+p/s4lhpkNa+A7OIhBmQkfwscHXXrhf67f
|
||||
slavMnkCKbccegOtd9+i2NggtwkJDeNqZfgq6J7yXSxAm8jJjdAgJkqLmc9Vkxku
|
||||
GuUkQffIlHeDKj6jKg8Og+oAeRShLf6rxlFIB/PedJ9bjbZwUZDHUd80dHlAFWU=
|
||||
=VrP+
|
||||
-----END PGP SIGNATURE-----
|
||||
29
hplip-base-fix-error-in-ConfigBase-handling.patch
Normal file
29
hplip-base-fix-error-in-ConfigBase-handling.patch
Normal file
@@ -0,0 +1,29 @@
|
||||
From 2a13a15b7f533606667e8586ff5ed736f038f2e8 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Thu, 23 Jan 2025 12:47:43 +0100
|
||||
Subject: [PATCH 1/2] hplip/base: fix error in ConfigBase handling
|
||||
|
||||
The code in question was apparently meant to handle the replacement
|
||||
of ConfigParser.readfp() by ConfigParser.read_file(). But the code
|
||||
is obviously broken, trying read_file() first and then read_file()
|
||||
again.
|
||||
---
|
||||
base/g.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/base/g.py b/base/g.py
|
||||
index 0d1c986..c1f5d24 100644
|
||||
--- a/base/g.py
|
||||
+++ b/base/g.py
|
||||
@@ -128,7 +128,7 @@ class ConfigBase(object):
|
||||
try:
|
||||
fp = open(self.filename, "r")
|
||||
try:
|
||||
- self.conf.read_file(fp)
|
||||
+ self.conf.readfp(fp)
|
||||
except AttributeError as e:
|
||||
log.error(f"Error: {e}. Retrying with read_file")
|
||||
try:
|
||||
--
|
||||
2.48.1
|
||||
|
||||
32
hplip-base-replace-f-string-with-string.format-for-p.patch
Normal file
32
hplip-base-replace-f-string-with-string.format-for-p.patch
Normal file
@@ -0,0 +1,32 @@
|
||||
From f1fef1ed07951fbc6e81d90ab43172974979eeeb Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Wed, 22 Jan 2025 17:44:04 +0100
|
||||
Subject: [PATCH 2/2] hplip/base: replace f-string with string.format for
|
||||
python2 compatibility
|
||||
|
||||
---
|
||||
base/g.py | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/base/g.py b/base/g.py
|
||||
index c1f5d24..a3b6191 100644
|
||||
--- a/base/g.py
|
||||
+++ b/base/g.py
|
||||
@@ -130,12 +130,12 @@ class ConfigBase(object):
|
||||
try:
|
||||
self.conf.readfp(fp)
|
||||
except AttributeError as e:
|
||||
- log.error(f"Error: {e}. Retrying with read_file")
|
||||
+ log.error("Error: {0}. Retrying with read_file".format(e))
|
||||
try:
|
||||
# Attempting to use read_file as a fallback
|
||||
self.conf.read_file(fp)
|
||||
except Exception as e:
|
||||
- log.error(f"Reading file with read_file also failed. Error: {e}")
|
||||
+ log.error("Reading file with read_file also failed. Error: {0}".format(e))
|
||||
except configparser.MissingSectionHeaderError:
|
||||
print("")
|
||||
log.error("Found No Section in %s. Please set the http proxy for root and try again." % self.filename)
|
||||
--
|
||||
2.48.1
|
||||
|
||||
@@ -7,7 +7,7 @@ Index: hplip-3.19.6/base/validation.py
|
||||
|
||||
class GPG_Verification(DigiSign_Verification):
|
||||
- def __init__(self, pgp_site = 'pgp.mit.edu', key = 0x4ABA2F66DBD5A95894910E0673D770CDA59047B9):
|
||||
+ def __init__(self, pgp_site = 'pgp.surf.nl', key = 0x4ABA2F66DBD5A95894910E0673D770CDA59047B9):
|
||||
+ def __init__(self, pgp_site = 'keyserver.ubuntu.com', key = 0x82FFA7C6AA7411D934BDE173AC69536A2CF3A243):
|
||||
self.__pgp_site = pgp_site
|
||||
self.__key = key
|
||||
self.__gpg = utils.which('gpg',True)
|
||||
|
||||
62
hplip-fix-driver-probing-using-avahi.patch
Normal file
62
hplip-fix-driver-probing-using-avahi.patch
Normal file
@@ -0,0 +1,62 @@
|
||||
From d68d0748c4493ef3192e4f59756ece2bd2fbb004 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Tue, 19 Aug 2025 12:06:17 +0200
|
||||
Subject: [PATCH] hplip: fix driver probing using avahi
|
||||
|
||||
- _printer._tcp doesn't work for my printer (HP Smart Tank 7300 series).
|
||||
mdns.py uses _pdl-datastream._tcp, which works.
|
||||
- my printer sends `usb_MDL` property, which mdns.py accepts as alternative
|
||||
for `ty`.
|
||||
- "bonjour" search protocol exists nowhere else in the code. "avahi" does.
|
||||
---
|
||||
base/avahi.py | 8 ++++++--
|
||||
probe.py | 4 ++--
|
||||
2 files changed, 8 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/base/avahi.py b/base/avahi.py
|
||||
index 51795dd..b82a089 100755
|
||||
--- a/base/avahi.py
|
||||
+++ b/base/avahi.py
|
||||
@@ -37,6 +37,9 @@ def detectNetworkDevices(ttl=4, timeout=10):
|
||||
# Obtain all the resolved services which has service type '_printer._tcp' from avahi-browse
|
||||
p = Popen(['avahi-browse', '-kprt', '_printer._tcp'], stdout=PIPE)
|
||||
output = to_string_utf8(p.communicate()[0])
|
||||
+ p = Popen(['avahi-browse', '-kprt', '_pdl-datastream._tcp'], stdout=PIPE)
|
||||
+ output += to_string_utf8(p.communicate()[0])
|
||||
+
|
||||
for line in output.splitlines():
|
||||
if line.startswith('='):
|
||||
bits = line.split(';')
|
||||
@@ -55,11 +58,12 @@ def detectNetworkDevices(ttl=4, timeout=10):
|
||||
details = bits[9].split('" "')
|
||||
for item in details:
|
||||
key, value = item.split('=', 1)
|
||||
- if key == 'ty':
|
||||
+ if key == 'ty' or key == 'usb_MDL':
|
||||
y['mdns'] = value
|
||||
y['device1'] = "MFG:Hewlett-Packard;MDL:%s;CLS:PRINTER;" % value
|
||||
break
|
||||
- found_devices[y['ip']] = y
|
||||
+ if y['ip'] not in found_devices:
|
||||
+ found_devices[y['ip']] = y
|
||||
#log.debug("ip=%s hn=%s ty=%s" %(ip,y['hn'], y['mdns']))
|
||||
except socket.gaierror:
|
||||
pass
|
||||
diff --git a/probe.py b/probe.py
|
||||
index 82e5de9..3bf3ba8 100755
|
||||
--- a/probe.py
|
||||
+++ b/probe.py
|
||||
@@ -93,8 +93,8 @@ try:
|
||||
elif o in ('-m', '--method'):
|
||||
method = a.lower().strip()
|
||||
|
||||
- if method not in ('slp', 'mdns', 'bonjour'):
|
||||
- mod.usage(error_msg=["Invalid network search protocol name. Must be 'slp' or 'mdns'."])
|
||||
+ if method not in ('slp', 'mdns', 'avahi'):
|
||||
+ mod.usage(error_msg=["Invalid network search protocol name. Must be 'slp', 'mdns', or 'avahi'."])
|
||||
else:
|
||||
bus = ['net']
|
||||
|
||||
--
|
||||
2.50.1
|
||||
|
||||
28
hplip-fix-python-crash-in-avahi.py.patch
Normal file
28
hplip-fix-python-crash-in-avahi.py.patch
Normal file
@@ -0,0 +1,28 @@
|
||||
From 5bdb75b1b3397abd58a69aba18c6aacf8d70df77 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Tue, 19 Aug 2025 23:38:24 +0200
|
||||
Subject: [PATCH] hplip: fix python crash in avahi.py
|
||||
|
||||
The avahi search method may crash on MDNS records that have
|
||||
an empty "details" field (field 9). This can happen e.g. for
|
||||
existing shared local printers advertized by cups.
|
||||
---
|
||||
base/avahi.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/base/avahi.py b/base/avahi.py
|
||||
index b82a089..f168585 100755
|
||||
--- a/base/avahi.py
|
||||
+++ b/base/avahi.py
|
||||
@@ -43,7 +43,7 @@ def detectNetworkDevices(ttl=4, timeout=10):
|
||||
for line in output.splitlines():
|
||||
if line.startswith('='):
|
||||
bits = line.split(';')
|
||||
- if bits[2] == 'IPv4' and len(bits[7].split('.')) == 4:
|
||||
+ if bits[2] == 'IPv4' and len(bits[7].split('.')) == 4 and bits[9] != "":
|
||||
ip = bits[7]
|
||||
port = bits[8]
|
||||
# Run through the offered addresses and see if we have a bound local
|
||||
--
|
||||
2.50.1
|
||||
|
||||
114
hplip-hpaio-gcc14.patch
Normal file
114
hplip-hpaio-gcc14.patch
Normal file
@@ -0,0 +1,114 @@
|
||||
diff --git a/scan/sane/hpaio.c b/scan/sane/hpaio.c
|
||||
index 57d1dde..3475929 100644
|
||||
--- a/scan/sane/hpaio.c
|
||||
+++ b/scan/sane/hpaio.c
|
||||
@@ -379,7 +379,7 @@ extern SANE_Status sane_hpaio_get_devices(const SANE_Device ***deviceList, SANE_
|
||||
ResetDeviceList(&DeviceList);
|
||||
DevDiscovery(localOnly);
|
||||
*deviceList = (const SANE_Device **)DeviceList;
|
||||
- SANE_Device*** devList;
|
||||
+ const SANE_Device*** devList;
|
||||
orblite_get_devices(devList, localOnly);
|
||||
|
||||
return SANE_STATUS_GOOD;
|
||||
diff --git a/scan/sane/orblite.c b/scan/sane/orblite.c
|
||||
index 2eb7aba..4eaa468 100644
|
||||
--- a/scan/sane/orblite.c
|
||||
+++ b/scan/sane/orblite.c
|
||||
@@ -64,28 +64,28 @@ SANE_Option_Descriptor DefaultOrbOptions[] = {
|
||||
SANE_NAME_SCAN_TL_X, SANE_TITLE_SCAN_TL_X, SANE_DESC_SCAN_TL_X, // name, title, desc
|
||||
SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size
|
||||
SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)
|
||||
- SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeLeft // constraint_type, constraint
|
||||
+ SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeLeft // constraint_type, constraint
|
||||
},
|
||||
|
||||
{
|
||||
SANE_NAME_SCAN_TL_Y, SANE_TITLE_SCAN_TL_Y, SANE_DESC_SCAN_TL_Y, // name, title, desc
|
||||
SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size
|
||||
SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)
|
||||
- SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeTop // constraint_type, constraint
|
||||
+ SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeTop // constraint_type, constraint
|
||||
},
|
||||
|
||||
{
|
||||
SANE_NAME_SCAN_BR_X, SANE_TITLE_SCAN_BR_X, SANE_DESC_SCAN_BR_X, // name, title, desc
|
||||
SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size
|
||||
SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)
|
||||
- SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeRight // constraint_type, constraint
|
||||
+ SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeRight // constraint_type, constraint
|
||||
},
|
||||
|
||||
{
|
||||
SANE_NAME_SCAN_BR_Y, SANE_TITLE_SCAN_BR_Y, SANE_DESC_SCAN_BR_Y, // name, title, desc
|
||||
SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size
|
||||
SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)
|
||||
- SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeBottom // constraint_type, constraint
|
||||
+ SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeBottom // constraint_type, constraint
|
||||
},
|
||||
|
||||
// optResolution, // resolution group
|
||||
@@ -93,7 +93,7 @@ SANE_Option_Descriptor DefaultOrbOptions[] = {
|
||||
SANE_NAME_SCAN_RESOLUTION, SANE_TITLE_SCAN_RESOLUTION, SANE_DESC_SCAN_RESOLUTION, // name, title, desc
|
||||
SANE_TYPE_INT, SANE_UNIT_DPI, sizeof(SANE_Word), // type, unit, size,
|
||||
SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)
|
||||
- SANE_CONSTRAINT_WORD_LIST, (SANE_Char**)SANE_resolutions // constraint type, constraint
|
||||
+ SANE_CONSTRAINT_WORD_LIST, (const SANE_Char**)SANE_resolutions // constraint type, constraint
|
||||
},
|
||||
|
||||
// optMode, // color/depth group
|
||||
@@ -101,7 +101,7 @@ SANE_Option_Descriptor DefaultOrbOptions[] = {
|
||||
SANE_NAME_SCAN_MODE, SANE_TITLE_SCAN_MODE, SANE_DESC_SCAN_MODE, // name, title, desc
|
||||
SANE_TYPE_STRING, SANE_UNIT_NONE, 256, // type, unit, size,
|
||||
SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)
|
||||
- SANE_CONSTRAINT_STRING_LIST, (SANE_Char**)SANE_modes // constraint type, constraint
|
||||
+ SANE_CONSTRAINT_STRING_LIST, (const SANE_Char**)SANE_modes // constraint type, constraint
|
||||
},
|
||||
|
||||
// optSource,
|
||||
@@ -109,7 +109,7 @@ SANE_Option_Descriptor DefaultOrbOptions[] = {
|
||||
SANE_NAME_SCAN_SOURCE, SANE_TITLE_SCAN_SOURCE, SANE_DESC_SCAN_SOURCE, // name, title, desc
|
||||
SANE_TYPE_STRING, SANE_UNIT_NONE, 256, // type, unit, size,
|
||||
SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)
|
||||
- SANE_CONSTRAINT_STRING_LIST, (SANE_Char**)SANE_sources // constraint type, constraint
|
||||
+ SANE_CONSTRAINT_STRING_LIST, (const SANE_Char**)SANE_sources // constraint type, constraint
|
||||
},
|
||||
|
||||
// optPaperSize,
|
||||
@@ -117,7 +117,7 @@ SANE_Option_Descriptor DefaultOrbOptions[] = {
|
||||
SANE_NAME_PAPER_SIZE, SANE_TITLE_PAPER_SIZE, SANE_DESC_PAPER_SIZE, // name, title, desc
|
||||
SANE_TYPE_STRING, SANE_UNIT_NONE, 256, // type, unit, size,
|
||||
SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)
|
||||
- SANE_CONSTRAINT_STRING_LIST, (SANE_Char**)SANE_paper_sizes // constraint type, constraint
|
||||
+ SANE_CONSTRAINT_STRING_LIST, (const SANE_Char**)SANE_paper_sizes // constraint type, constraint
|
||||
},
|
||||
|
||||
// optPaperSize,
|
||||
@@ -125,7 +125,7 @@ SANE_Option_Descriptor DefaultOrbOptions[] = {
|
||||
SANE_NAME_PAPER_SIZE, SANE_TITLE_PAPER_SIZE, SANE_DESC_PAPER_SIZE, // name, title, desc
|
||||
SANE_TYPE_INT, SANE_UNIT_DPI, sizeof(SANE_Word), // type, unit, size,
|
||||
SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)
|
||||
- SANE_CONSTRAINT_WORD_LIST, (SANE_Char**)SANE_resolutions // constraint type, constraint
|
||||
+ SANE_CONSTRAINT_WORD_LIST, (const SANE_Char**)SANE_resolutions // constraint type, constraint
|
||||
},
|
||||
#ifdef NOTDEF
|
||||
// default template
|
||||
@@ -274,6 +274,7 @@ orblite_open (SANE_String_Const devicename, SANE_Handle * handle)
|
||||
SANE_Auth_Callback authorize;
|
||||
const SANE_Device *** device_list;
|
||||
SANE_Bool local_only;
|
||||
+ void * temp_handle;
|
||||
|
||||
|
||||
// Allocate handle, set all handle values to zero
|
||||
@@ -305,7 +306,9 @@ orblite_open (SANE_String_Const devicename, SANE_Handle * handle)
|
||||
if (stat != SANE_STATUS_GOOD)
|
||||
return stat;
|
||||
|
||||
- stat = g_handle->bb_orblite_open(devicename, &g_handle);
|
||||
+ temp_handle = g_handle;
|
||||
+ stat = g_handle->bb_orblite_open(devicename, &temp_handle);
|
||||
+ g_handle = temp_handle;
|
||||
if (stat == SANE_STATUS_GOOD)
|
||||
*handle = g_handle;
|
||||
|
||||
79
hplip-no-urlopener.patch
Normal file
79
hplip-no-urlopener.patch
Normal file
@@ -0,0 +1,79 @@
|
||||
diff --git a/base/device.py b/base/device.py
|
||||
index 2fdb29c..ca0d97e 100644
|
||||
--- a/base/device.py
|
||||
+++ b/base/device.py
|
||||
@@ -2526,9 +2526,9 @@ Content-length: %d\r
|
||||
data = None
|
||||
|
||||
log.debug("Opening: %s" % url2)
|
||||
- opener = LocalOpener({})
|
||||
+ opener = LocalOpener()
|
||||
try:
|
||||
- f = opener.open(url2, data)
|
||||
+ f = opener.open_hp(url2, data)
|
||||
|
||||
except Error:
|
||||
log.error("Status read failed: %s" % url2)
|
||||
@@ -2548,7 +2548,7 @@ Content-length: %d\r
|
||||
try:
|
||||
url2 = "%s&loc=%s" % (self.device_uri.replace('hpfax:', 'hp:'), url)
|
||||
data = self
|
||||
- opener = LocalOpenerEWS_LEDM({})
|
||||
+ opener = LocalOpenerEWS_LEDM()
|
||||
try:
|
||||
if footer:
|
||||
return opener.open_hp(url2, data, footer)
|
||||
@@ -2563,7 +2563,7 @@ Content-length: %d\r
|
||||
try:
|
||||
url2 = "%s&loc=%s" % (self.device_uri.replace('hpfax:', 'hp:'), url)
|
||||
data = self
|
||||
- opener = LocalOpener_LEDM({})
|
||||
+ opener = LocalOpener_LEDM()
|
||||
try:
|
||||
if footer:
|
||||
return opener.open_hp(url2, data, footer)
|
||||
@@ -2580,7 +2580,7 @@ Content-length: %d\r
|
||||
url="/cdm/supply/v1/suppliesPublic"
|
||||
url2 = "%s&loc=%s" % (self.device_uri.replace('hpfax:', 'hp:'), url)
|
||||
data = self
|
||||
- opener = LocalOpener_CDM({})
|
||||
+ opener = LocalOpener_CDM()
|
||||
try:
|
||||
if footer:
|
||||
return opener.open_hp(url2, data, footer)
|
||||
@@ -2688,7 +2688,7 @@ Content-length: %d\r
|
||||
|
||||
|
||||
# URLs: hp:/usb/HP_LaserJet_3050?serial=00XXXXXXXXXX&loc=/hp/device/info_device_status.xml
|
||||
-class LocalOpener(urllib_request.URLopener):
|
||||
+class LocalOpener():
|
||||
def open_hp(self, url, dev):
|
||||
log.debug("open_hp(%s)" % url)
|
||||
|
||||
@@ -2718,7 +2718,7 @@ class LocalOpener(urllib_request.URLopener):
|
||||
return response#.fp
|
||||
|
||||
# URLs: hp:/usb/HP_OfficeJet_7500?serial=00XXXXXXXXXX&loc=/hp/device/info_device_status.xml
|
||||
-class LocalOpenerEWS_LEDM(urllib_request.URLopener):
|
||||
+class LocalOpenerEWS_LEDM():
|
||||
def open_hp(self, url, dev, foot=""):
|
||||
log.debug("open_hp(%s)" % url)
|
||||
|
||||
@@ -2744,7 +2744,7 @@ class LocalOpenerEWS_LEDM(urllib_request.URLopener):
|
||||
|
||||
|
||||
# URLs: hp:/usb/HP_OfficeJet_7500?serial=00XXXXXXXXXX&loc=/hp/device/info_device_status.xml
|
||||
-class LocalOpener_LEDM(urllib_request.URLopener):
|
||||
+class LocalOpener_LEDM():
|
||||
def open_hp(self, url, dev, foot=""):
|
||||
log.debug("open_hp(%s)" % url)
|
||||
|
||||
@@ -2771,7 +2771,7 @@ class LocalOpener_LEDM(urllib_request.URLopener):
|
||||
|
||||
|
||||
# URLs: hp:/usb/HP_OfficeJet_7500?serial=00XXXXXXXXXX&loc=/hp/device/info_device_status.xml
|
||||
-class LocalOpener_CDM(urllib_request.URLopener):
|
||||
+class LocalOpener_CDM():
|
||||
def open_hp(self, url, dev, foot=""):
|
||||
log.debug("open_hp(%s)" % url)
|
||||
match_obj = http_pat_url.search(url)
|
||||
17
hplip-pserror-c99.patch
Normal file
17
hplip-pserror-c99.patch
Normal file
@@ -0,0 +1,17 @@
|
||||
prnt/pserror.c: Replace an implicit int with an explicit int
|
||||
|
||||
Submitted upstream: <https://bugs.launchpad.net/hplip/+bug/1997875>
|
||||
|
||||
diff --git a/prnt/hpps/pserror.c b/prnt/hpps/pserror.c
|
||||
index 114d7e1b5fa364fb..493b49c27917a7e6 100644
|
||||
--- a/prnt/hpps/pserror.c
|
||||
+++ b/prnt/hpps/pserror.c
|
||||
@@ -24,7 +24,7 @@ extern char *program ; /* Defined by main program, giving program name */
|
||||
void message(int flags, char *format, ...)
|
||||
{
|
||||
va_list args ;
|
||||
- static column = 0 ; /* current screen column for message wrap */
|
||||
+ static int column = 0 ; /* current screen column for message wrap */
|
||||
char msgbuf[MAX_MESSAGE] ; /* buffer in which to put the message */
|
||||
char *bufptr = msgbuf ; /* message buffer pointer */
|
||||
|
||||
@@ -2,8 +2,5 @@ from Config import *
|
||||
|
||||
addFilter("arch-dependent-file-in-usr-share")
|
||||
# Ignore any duplicate files
|
||||
addFilter("files-duplicate .*/hplip/.*/__init__.py")
|
||||
addFilter("files-duplicate .*/hplip/*/__init__.*pyc")
|
||||
addFilter("files-duplicate .*/hplip/.*/__pycache__/__init__.*.pyc")
|
||||
#
|
||||
addFilter("files-duplicate .*/hplip/.*/__init__.py")
|
||||
addFilter("non-executable-script /usr/share/hplip/.*")
|
||||
|
||||
19
hplip-scan-hpaio-include.patch
Normal file
19
hplip-scan-hpaio-include.patch
Normal file
@@ -0,0 +1,19 @@
|
||||
scam/sane/hpaio.c: Include orblite.h for more function prototypes
|
||||
|
||||
Otherwise the build fails with compilers which do not support
|
||||
implicit function declarations.
|
||||
|
||||
Submitted upstream: <https://bugs.launchpad.net/hplip/+bug/1997875>
|
||||
|
||||
diff --git a/scan/sane/hpaio.c b/scan/sane/hpaio.c
|
||||
index d342626822fc2190..57d1ddea32fb5816 100644
|
||||
--- a/scan/sane/hpaio.c
|
||||
+++ b/scan/sane/hpaio.c
|
||||
@@ -50,6 +50,7 @@
|
||||
#include "sclpml.h"
|
||||
#include "escl.h"
|
||||
#include "io.h"
|
||||
+#include "orblite.h"
|
||||
#include "orblitei.h"
|
||||
|
||||
|
||||
48
hplip-scan-orblite-c99.patch
Normal file
48
hplip-scan-orblite-c99.patch
Normal file
@@ -0,0 +1,48 @@
|
||||
scan/sane/orblite: Include <dflcn.h> for function prototypes
|
||||
|
||||
This is required for C99 compatibility. Also delete the unused
|
||||
bb_unload function because it calls a call to the undefined
|
||||
_DBG function/macro.
|
||||
|
||||
Submitted upstream: <https://bugs.launchpad.net/hplip/+bug/1997875>
|
||||
|
||||
diff --git a/scan/sane/orblite.c b/scan/sane/orblite.c
|
||||
index ba86640c7528fc9c..ac59dda9c2dba593 100644
|
||||
--- a/scan/sane/orblite.c
|
||||
+++ b/scan/sane/orblite.c
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "orblitei.h"
|
||||
#include "orblite.h"//Added New
|
||||
#include <math.h>
|
||||
+#include <dlfcn.h>
|
||||
#include "utils.h"
|
||||
#include "io.h"
|
||||
|
||||
@@ -193,27 +194,6 @@ bugout:
|
||||
|
||||
}
|
||||
|
||||
-static int bb_unload(SANE_THandle ps)
|
||||
-{
|
||||
- _DBG("Calling orblite bb_unload: \n");
|
||||
- if (ps->bb_handle)
|
||||
- {
|
||||
- dlclose(ps->bb_handle);
|
||||
- ps->bb_handle = NULL;
|
||||
- }
|
||||
- if (ps->hpmud_handle)
|
||||
- {
|
||||
- dlclose(ps->hpmud_handle);
|
||||
- ps->hpmud_handle = NULL;
|
||||
- }
|
||||
-// if (ps->math_handle)
|
||||
-// {
|
||||
-// dlclose(ps->math_handle);
|
||||
-// ps->math_handle = NULL;
|
||||
-// }
|
||||
- return 0;
|
||||
-}
|
||||
-
|
||||
SANE_Status
|
||||
orblite_init (SANE_Int * version_code, SANE_Auth_Callback authorize)
|
||||
{
|
||||
20
hplip-sclpml-strcasestr.patch
Normal file
20
hplip-sclpml-strcasestr.patch
Normal file
@@ -0,0 +1,20 @@
|
||||
Kludge to support building C99 mode. This should no longer be needed
|
||||
once glibc declares strcasestr by default, and not just with
|
||||
-D_GNU_SOURCE.
|
||||
|
||||
Submitted upstream: <https://bugs.launchpad.net/hplip/+bug/1997875>
|
||||
|
||||
diff --git a/scan/sane/sclpml.c b/scan/sane/sclpml.c
|
||||
index dc8b32ce02ad1202..f2cacd53e86800ce 100644
|
||||
--- a/scan/sane/sclpml.c
|
||||
+++ b/scan/sane/sclpml.c
|
||||
@@ -47,6 +47,9 @@
|
||||
#define DEBUG_DECLARE_ONLY
|
||||
#include "sanei_debug.h"
|
||||
|
||||
+/* This file is not built with _GNU_SOURCE. */
|
||||
+char *strcasestr(const char *, const char *);
|
||||
+
|
||||
//# define SCLPML_DEBUG
|
||||
# ifdef SCLPML_DEBUG
|
||||
# define _DBG(args...) syslog(LOG_INFO, __FILE__ " " STRINGIZE(__LINE__) ": " args)
|
||||
68
hplip-utils-Fix-plugin-verification-with-sha256.patch
Normal file
68
hplip-utils-Fix-plugin-verification-with-sha256.patch
Normal file
@@ -0,0 +1,68 @@
|
||||
From 8d14912a48e589bee05e0c377c29218132083145 Mon Sep 17 00:00:00 2001
|
||||
From: Martin Wilck <mwilck@suse.com>
|
||||
Date: Wed, 7 May 2025 15:23:17 +0200
|
||||
Subject: [PATCH] hplip/utils: Fix plugin verification with sha256
|
||||
|
||||
https://bugs.launchpad.net/hplip/+bug/2110100
|
||||
---
|
||||
base/smart_install.py | 2 +-
|
||||
base/utils.py | 12 +++++++++++-
|
||||
installer/pluginhandler.py | 4 ++--
|
||||
3 files changed, 14 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/base/smart_install.py b/base/smart_install.py
|
||||
index cff5924..699f70f 100755
|
||||
--- a/base/smart_install.py
|
||||
+++ b/base/smart_install.py
|
||||
@@ -155,7 +155,7 @@ def validate(mode, smart_install_run, smart_install_asc, req_checksum=''):
|
||||
calc_checksum = utils.get_checksum(open(smart_install_run, 'r').read())
|
||||
log.debug("File checksum=%s" % calc_checksum)
|
||||
|
||||
- if req_checksum and req_checksum != calc_checksum:
|
||||
+ if utils.sha256_checksum(req_checksum) != calc_checksum:
|
||||
return ERROR_FILE_CHECKSUM, queryString(ERROR_CHECKSUM_ERROR, 0, plugin_file)
|
||||
|
||||
#Validate Digital Signature
|
||||
diff --git a/base/utils.py b/base/utils.py
|
||||
index d5b3a49..f9de94e 100644
|
||||
--- a/base/utils.py
|
||||
+++ b/base/utils.py
|
||||
@@ -72,8 +72,18 @@ import hashlib
|
||||
def get_checksum(s):
|
||||
return hashlib.sha256(s).hexdigest()
|
||||
|
||||
+__sha1_sha256_map = {
|
||||
+ "bd99405113d43447e7a37ed46d75187785774cff":
|
||||
+ "9a2cf8d5661e846548dbbb595231a5448a5cb63729cc93df8d1f652dfd167a54"
|
||||
+}
|
||||
|
||||
-
|
||||
+def sha256_checksum(s):
|
||||
+ if not s:
|
||||
+ return ""
|
||||
+ elif s in __sha1_sha256_map:
|
||||
+ return __sha1_sha256_map[s]
|
||||
+ else:
|
||||
+ return s
|
||||
|
||||
# Local
|
||||
from .g import *
|
||||
diff --git a/installer/pluginhandler.py b/installer/pluginhandler.py
|
||||
index a37db39..26b0033 100755
|
||||
--- a/installer/pluginhandler.py
|
||||
+++ b/installer/pluginhandler.py
|
||||
@@ -217,9 +217,9 @@ class PluginHandle(object):
|
||||
def __validatePlugin(self,plugin_file, digsig_file, req_checksum):
|
||||
|
||||
#Validate Checksum
|
||||
- calc_checksum = get_checksum(open(plugin_file, 'rb').read())
|
||||
+ calc_checksum = utils.get_checksum(open(plugin_file, 'rb').read())
|
||||
log.debug("D/L file checksum=%s" % calc_checksum)
|
||||
- if req_checksum and req_checksum != calc_checksum:
|
||||
+ if utils.sha256_checksum(req_checksum) != calc_checksum:
|
||||
return ERROR_CHECKSUM_ERROR, queryString(ERROR_CHECKSUM_ERROR, 0, plugin_file)
|
||||
|
||||
#Validate Digital Signatures
|
||||
--
|
||||
2.49.0
|
||||
|
||||
216
hplip.changes
216
hplip.changes
@@ -1,3 +1,215 @@
|
||||
-------------------------------------------------------------------
|
||||
Sat Nov 22 21:18:02 CET 2025 - Stanislav Brabec <sbrabec@suse.com>
|
||||
|
||||
- Remove unused BuildRequires: update-desktop-files.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Oct 8 20:43:58 UTC 2025 - Martin Wilck <mwilck@suse.com>
|
||||
|
||||
- Move more utilities from hplip-utils to hplip-base.
|
||||
* hplip-base now contains all utilities that are not totally useless
|
||||
and can run without the Qt GUI.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Oct 8 14:55:02 UTC 2025 - Martin Wilck <mwilck@suse.com>
|
||||
|
||||
- Update fix for support of new GPG key, as the key has now been
|
||||
uploaded to GPG keyservers (lp#2120738)
|
||||
* drop hplip-hardcode-new-signing-key-AC69536A2CF3A243.patch
|
||||
* update hplip-change-pgp-server.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Oct 8 14:28:09 UTC 2025 - Martin Wilck <mwilck@suse.com>
|
||||
|
||||
- Drop dependency on cups-ppdc. It isn't necessary, as PPD
|
||||
generation on target system is done by cups-driverd.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Sep 29 13:13:08 UTC 2025 - Johannes Meixner <jsmeix@suse.com>
|
||||
|
||||
- The old and outdated 'hpijs' driver support is finally dropped
|
||||
(the 'hpcups' driver is the default driver since 2009)
|
||||
so that there is no need for foomatic-filters (boo#1250481)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 21 10:50:17 UTC 2025 - Martin Wilck <martin.wilck@suse.com>
|
||||
|
||||
- Continue refactoring:
|
||||
* move GUI tools to "hplip-utils" subpackage
|
||||
* convert "hplip" into an empty metapackage that pulls in hplip-utils
|
||||
and all drivers / PPDs (except hpijs PPDs).
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Aug 19 13:33:02 UTC 2025 - Martin Wilck <mwilck@suse.com>
|
||||
|
||||
- Refactor package structure:
|
||||
* hplip: full set of utilities. Pulls in almost all subpackages
|
||||
to deliver the "traditional" hplip experience
|
||||
* hplip-base: small set of basic utilities that can be run
|
||||
without GUI. Includes hp-probe and hp-plugin
|
||||
* hplip-cups: minimal package for printing, without PPDs or
|
||||
setup helpers
|
||||
* hplip-sane: scanning support (unchanged)
|
||||
* hplip-driver-hpcups: hpcups.drv for generating hpcups PPDs on
|
||||
the fly (requires ppdc). The functionality of this package is
|
||||
similar to the old (misnamed) "hplip-hpijs" package.
|
||||
* hplip-driver-hpijs: hpijs.drv for generating PPDs for the deprecated
|
||||
hpijs / foomatic_rip filter. Note that this functionality was not part of
|
||||
the late hplip-hpijs package, because upstream hasn't ship foomatic PPDs
|
||||
since hplip 3.17.11.
|
||||
* hplip-ppds-{hpcups,hpps,postscript,hpijs,fax,plugin}: static PPD
|
||||
files for different printer types.
|
||||
hplip-ppds-hpcups is an alternative to hplip-driver-hpcups.
|
||||
* libhplip0: shared library package, used by hplip-cups and
|
||||
hplip-sane
|
||||
* hplip-common: configuration files and directories used by
|
||||
all hplip packages.
|
||||
|
||||
- Other spec file changes:
|
||||
* Skip deprecated suse_update_desktop_file by default on TW
|
||||
* Don't mess with sane configuration in udev rules
|
||||
* Only the hpijs packages depend on foomatic-rip, which is only
|
||||
provided by cups-filters-1.x. The other packages can be used
|
||||
with cups-filters2.
|
||||
* Remove Obsoletes: for ancient predecessor packages
|
||||
* Remove outdated comments from spec file
|
||||
* Shorten package descriptions
|
||||
* Fix a couple of rpmlint issues
|
||||
|
||||
- Fix printer probing using avahi (lp#2120947)
|
||||
* Add hplip-fix-driver-probing-using-avahi.patch
|
||||
* Add hplip-fix-python-crash-in-avahi.py.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Aug 15 21:38:25 UTC 2025 - Martin Wilck <mwilck@suse.com>
|
||||
|
||||
- Fix verification of HP plugin with new GPG key (lp#2120738)
|
||||
* add hplip-hardcode-new-signing-key-AC69536A2CF3A243.patch
|
||||
- Fix python crash in hp-setup on compressed PPD file (lp#2120739)
|
||||
* add hp-setup-fix-python-crash-when-manually-importing-gz.patch
|
||||
- Fix missing urllib.URLopener in python 3.14 (lp#2115046)
|
||||
* add hplip-no-urlopener.patch
|
||||
- Only run cupstestppd if explicitly requested with "--with testppd"
|
||||
build parameter
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Aug 15 15:59:19 UTC 2025 - Martin Wilck <mwilck@suse.com>
|
||||
|
||||
- Updated hplip gpg public key
|
||||
fingerprint: 82FF A7C6 AA74 11D9 34BD E173 AC69 536A 2CF3 A243
|
||||
https://developers.hp.com/hp-linux-imaging-and-printing/hplipDigitalCertificate.html
|
||||
|
||||
- Update to hplip 3.25.6
|
||||
- Added support for new printers:
|
||||
* HP LaserJet Enterprise Flow MFP 8601z
|
||||
* HP LaserJet Pro MFP M126a plus
|
||||
* HP LaserJet Pro MFP M126nw plus
|
||||
* HP LaserJet Pro MFP M126snw plus
|
||||
* HP Envy Photo 7200 series
|
||||
* HP Envy Photo 7900 series
|
||||
* HP OfficeJet Pro 9110 Series
|
||||
* HP OfficeJet 9120 Series
|
||||
* HP OfficeJet Pro 9120 Series
|
||||
* HP OfficeJet Pro 9130 Series
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Aug 14 19:57:37 UTC 2025 - Lubos Kocman <lubos.kocman@suse.com>
|
||||
|
||||
- Disable hp-scan-utils on Leap 16.0
|
||||
Leap does not want to ship scikit-image -> python-pandas
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jul 15 17:52:47 UTC 2025 - Martin Wilck <mwilck@suse.com>
|
||||
|
||||
- Fix ReDoS issue in HPLIP's SLP parser (bsc#1245358)
|
||||
* add Fix-ReDoS-issue-in-HPLIP-s-SLP-parser.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed May 7 13:33:02 UTC 2025 - Martin Wilck <mwilck@suse.com>
|
||||
|
||||
- Update to hplip 3.25.2
|
||||
- Added support for new printers:
|
||||
* HP LaserJet Enterprise Flow MFP 8601z
|
||||
* HP LaserJet Enterprise Flow MFP 8601z+
|
||||
* HP LaserJet Enterprise MFP 8601dn
|
||||
* HP Color LaserJet Enterprise MFP 8801dn
|
||||
* HP Color LaserJet Enterprise Flow MFP 8801z
|
||||
* HP Color LaserJet Enterprise Flow MFP 8801z+
|
||||
* HP LaserJet Enterprise 8501dn
|
||||
* HP LaserJet Enterprise 8501x
|
||||
* HP LaserJet Enterprise 8501x+
|
||||
* DEX MFP D826
|
||||
* DEX MFP D82640
|
||||
* DEX MFP D82650
|
||||
* DEX MFP D82660
|
||||
* DEX D50145
|
||||
* DEX MFP D42540
|
||||
* DEX MFP D52645
|
||||
* DEX Color D55745
|
||||
* DEX Color MFP D57945
|
||||
* DEX Color MFP D677
|
||||
* DEX Color MFP D67755
|
||||
* DEX Color MFP D67765
|
||||
* DEX Color MFP D877
|
||||
* DEX Color MFP D87740
|
||||
* DEX Color MFP D87750
|
||||
* DEX Color MFP D87760
|
||||
* DEX Color MFP D87770
|
||||
* DEX Color MFP D786
|
||||
* DEX Colour MFP D78625
|
||||
* DEX Color MFP D78630
|
||||
* DEX Color MFP D78635
|
||||
* DEX MFP D731
|
||||
* DEX MFP D73130
|
||||
* DEX MFP D73135
|
||||
* DEX MFP D73140
|
||||
|
||||
- Fix plugin verification with sha256 (lp#2110100)
|
||||
* add hplip-utils-Fix-plugin-verification-with-sha256.patch
|
||||
|
||||
- Fix C++ compilation on SLE12
|
||||
* add hpcups-fix-compilation-on-SLE12.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon May 5 11:07:28 UTC 2025 - Friedrich Haubensak <hsk17@mail.de>
|
||||
|
||||
- Add hplip-3.24.4-gcc15.patch to fix gcc-15 compile time error
|
||||
(lp#2096650)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 29 14:51:04 UTC 2025 - Dominique Leuenberger <dimstar@opensuse.org>
|
||||
|
||||
- Add python3-setuptools BuildRequires: replaces the fix to
|
||||
manually inject PYTHON_INCLUDEDIR. Fix needed to build against
|
||||
Python 3.13.
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Jan 23 11:52:26 UTC 2025 - Martin Wilck <mwilck@suse.com>
|
||||
|
||||
- Fix error in ConfigBase handling (bsc#1209401)
|
||||
- add hplip-base-fix-error-in-ConfigBase-handling.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Wed Jan 22 16:52:17 UTC 2025 - Martin Wilck <mwilck@suse.com>
|
||||
|
||||
- Fix python error on SLE12-SP3 (bsc#1209401, bsc#1234745)
|
||||
- add hplip-base-replace-f-string-with-string.format-for-p.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Jan 14 11:34:35 UTC 2025 - Martin Wilck <mwilck@suse.com>
|
||||
|
||||
- hplip.spec: re-introduce macros for SLE12 compatibility, so that
|
||||
we can backport security fixes to older releases
|
||||
(bsc#1234745, CVE-2020-6923, jsc#PED-11978)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Mon Jul 15 15:19:58 UTC 2024 - Martin Jambor <mjambor@suse.com>
|
||||
|
||||
- Add hplip-pserror-c99.patch hplip-scan-hpaio-include.patch
|
||||
hplip-scan-orblite-c99.patch hplip-sclpml-strcasestr.patch
|
||||
hplip-hpaio-gcc14.patch to avoid C99 violations which prevent
|
||||
building with GCC 14. [boo#1225777]
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jun 21 21:30:55 UTC 2024 - Martin Wilck <martin.wilck@suse.com>
|
||||
|
||||
@@ -9,6 +221,8 @@ Fri Jun 21 21:30:55 UTC 2024 - Martin Wilck <martin.wilck@suse.com>
|
||||
* HP OfficeJet Pro 8130 All-in-One series
|
||||
* HP OfficeJet Pro 9720 Series
|
||||
* HP OfficeJet Pro 9730 Series
|
||||
- Bug fixes:
|
||||
* hpmud: sanitize printer serial number (bsc#1209401, lp#2012262)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Feb 22 07:51:33 UTC 2024 - Dominique Leuenberger <dimstar@opensuse.org>
|
||||
@@ -28,7 +242,7 @@ Wed Jan 3 16:11:11 UTC 2024 - Martin Wilck <mwilck@suse.com>
|
||||
* HP OfficeJet Pro 9110b series
|
||||
* HP Color LaserJet Enterprise Flow MFP X58045z
|
||||
* HP Color LaserJet Enterprise Flow MFP X58045zs
|
||||
* HP Color LaserJet Enterprise MFP X58045dn
|
||||
* HP Color LaserJet Enterprise MFP X58045dn
|
||||
* HP Color LaserJet Enterprise MFP X58045
|
||||
* HP LaserJet Pro P1106 plus
|
||||
* HP LaserJet Pro P1108 plus
|
||||
|
||||
@@ -1,39 +1,37 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v2.0.18 (GNU/Linux)
|
||||
|
||||
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
|
||||
=lgaV
|
||||
mQENBGhe8voBCAC/FDH1D4Y7d+8YbEjSb0jFROcpQrTBvB59tvTetm1YKi3Zm6Im
|
||||
BHqHaOLRsJk28lmv0JKPAQj52ybXvTgFwsbjFaOkA6X6y6jNdjzRXLMSGQxY1HMb
|
||||
0+ZwtLqEm3yWKsVuDHJ/8AsXc5uLT7q1v5snCWIzzapKD2UIcNL9nUkq1TGAD4xh
|
||||
sjoBy247ofnjZq921QJOod5GOhZfskISU7wfWwwSPl6NbOc5cK4Qpo2PMA/r38+m
|
||||
Y2svwS6u8XnljRU44txp76pNEFMYwGHsiaIviqTA/UXeib3yuN5NY7w2iXWMSqBs
|
||||
b0L9RWFCaxt/ZjNmG1qvo+MdGCSqs3E6wZzDABEBAAG0NEhQTElQIChIUCBMaW51
|
||||
eCBJbWFnaW5nIGFuZCBQcmludGluZykgPGhwbGlwQGhwLmNvbT6JATkEEwECACMF
|
||||
Amhe8voCGy8HCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRCsaVNqLPOiQ2Lt
|
||||
B/950TaQebUviamSc+R+65jM6u2janmEAD0m9BMveUBNwMkAp4MycKuVEw04IPCa
|
||||
XKUhdQJw0a19SgqKjy3RYoksgYfpKCrQAN6iyNIjIvbm51Ui4VyQXIGDi/ytu6fW
|
||||
wQZG0mlc0BboZWFniERP17jDPVHLTrbERByvdr+ytPVzsnRGEURQpl+dIRA/V4jx
|
||||
euzcTwJ92pJDg/l0kenXv4JgZlOlsB60wFqFO2zWXiplpgprIvrOfpoynfYjTu96
|
||||
3stRD3z+PoEa9llWRMTuooHPLC1+lknuQxO+xeNMT9q68zUanpgp6K82ZH1ZDjaP
|
||||
ec+xtHmbhNxz1M724/3OLU3OuQENBGhe8voBCADRlC7StIqnYRIw9rHKDY5eSMht
|
||||
6y8hrO7Fmdb5+wdOgLTNXuEaQZxgU1w+CdWUFUxUf3V/NBojHM0I29GuIcIRByKX
|
||||
QmqHNAtfNnj8hsFFiU0Dmail4oPfwdXOgh5vo65sfYK+tvJH4SrYYh55DN/j4a3H
|
||||
sPEZ0rxG8kM3s7AyXU1gEotPUsrv8k255oEPD1OdFrKZ5urcQ4dunvbcGQ71Qjw1
|
||||
dYPtUv9iPnxxXTA9X5aXqCwlTeeL4jQSrJa5Rr8z/gpbFynLrgkV/FUzEcRuQ4gs
|
||||
POhcDgsGLPBOlFatoHU3Zk1HrflNSiV+kE7Uy9Uf8FIR9e2BIU8mtvj8YLc1ABEB
|
||||
AAGJAj4EGAECAAkFAmhe8voCGy4BKQkQrGlTaizzokPAXSAEGQECAAYFAmhe8voA
|
||||
CgkQXk5NJKNOzVeOdQgAk3Zp0eTuzxDZn9QQefM/hxFI2bxR2TNzV7QadphvwmRW
|
||||
9G1vnQPosTNs2ock23DQiBayh5oYExF2Y34hr8/GAwfViAKo/fzIZYzF9GosscRV
|
||||
R9SbeHEVQ8GZuXa9ifIv9L6fPvP+AsDA76stXGPWpDCGHHcP1eZ3jmDsoxucEDKK
|
||||
UgNwL8XSZUbjusrEJJtrNu0UTToo+dMF//9xsIWnsWJ16ypVNSAXCTlyQO8fBSEO
|
||||
m6+d1mAdMRd64o9QBu1iYB0DCotLE/gPdKOthIUElNQXey6jYUpg0kRqAvPxd1DH
|
||||
wZ+/MphQXtdIG3Sb4ogB/7o6R6iqOdp5lrCwORWmacgSB/oCVB8OVY0GqP1qYj/+
|
||||
tup+s8esPsJRCOlv5bPVGhzVTgCgBQWK4wsp57grAiptseBDoVF37HY3vRi/ldy0
|
||||
SoISK1udxR7j/cy6Bzsv5xB2UR2K5uaYW/MTd+RkncOT5rHijyrrYBLJvhpnvhzw
|
||||
H/fm+XRHQPEu+i3tsMgNrZ4No8Nxa/i+0lpNS1+TbtcPt27RFC+1F4P7Ff9xFSrL
|
||||
nkm8j4hYZzG5s8K3TvDGiosqLGcMsVVXt8lFFdC1Pxd1TuLiUM7IMnPweiAjlfM0
|
||||
onZMYpdNUWSPht/2v/UQLVe0U9Y2lEnYiqY+IXqnWT7N/0d1Zt+K+7IfZsJt4Uio
|
||||
6saq
|
||||
=EWRb
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
|
||||
|
||||
833
hplip.spec
833
hplip.spec
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user