Compare commits

..

12 commits

Author SHA1 Message Date
Python Maint
47d2d96401 Rebuilt for Python 3.15.0b4 ABI change 2026-07-22 11:08:22 +02:00
Fedora Release Engineering
55a3f51a16 Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild 2026-07-16 03:19:40 +00:00
Zdenek Dohnal
f608b603fd fix CVE-2026-14544 - incomplete fix after CVE-2026-8631 (fedora#2496773,
fedora#2496772)
2026-07-03 10:33:25 +02:00
Zdenek Dohnal
0a47faa5bb Fix more leaks after CVE-2026-8632 fix 2026-06-15 13:00:20 +02:00
Zdenek Dohnal
4a29f32186 Add upstream ticket link 2026-06-15 10:27:32 +02:00
Yaakov Selkowitz
4a4a2ad197 Rebuilt for openssl 4.0 2026-06-12 18:44:42 -04:00
Zdenek Dohnal
cdc9207430 OSH fixes after CVE-2026-8631 2026-06-12 12:36:00 +02:00
Python Maint
8a72aa893c Rebuilt for Python 3.15 2026-06-03 20:08:49 +02:00
Zdenek Dohnal
1943415016 Fix location+user-agent of plugin in hp-plugin-download 2026-05-26 10:53:55 +02:00
Zdenek Dohnal
68e652d439 3.26.4 (fedora#2480158), fixes CVE-2026-8631, CVE-2026-8632 2026-05-25 18:23:54 +02:00
Benjamin A. Beasley
05bb4ddaa1 Rebuilt for net-snmp 5.9.5.2 2026-01-23 09:29:04 +00:00
Zdenek Dohnal
075cac0afb hplip-3.25.8 is available (fedora#2415311) 2026-01-09 13:04:20 +01:00
13 changed files with 265 additions and 163 deletions

2
.gitignore vendored
View file

@ -115,3 +115,5 @@ hplip-3.10.6.tar.gz
/hplip-3.24.4-repack.tar.gz
/hplip-3.25.2-repack.tar.gz
/hplip-3.25.6-repack.tar.gz
/hplip-3.25.8-repack.tar.gz
/hplip-3.26.4-repack.tar.gz

View file

@ -16,12 +16,12 @@ download()
{
SOURCE="$1"
@bindir@/curl --create-dirs -O --output-dir ~/.hplip --location ${SOURCE}
@bindir@/curl -f --user-agent 'Mozilla/5.0 (compatible; hplip-plugin/1.0)' --create-dirs -O --output-dir ~/.hplip --location ${SOURCE}
}
# link to the plugin
PLUGIN_SOURCE="https://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/${PLUGIN_FILE}"
FALLBACK_SOURCE="https://developers.hp.com/sites/default/files/${PLUGIN_FILE}"
FALLBACK_SOURCE="https://developers.hp.com/sites/default/files/2026-05/${PLUGIN_FILE}"
# create a hidden hplip dir to store a file indicating the plugin version after successful install
# the directory can be used by other hplip tools, so we don't have to remove it if the failure happens

View file

@ -0,0 +1,92 @@
diff -up hplip-3.21.2/prnt/hpcups/genPCLm.cpp.CVE-2026-8631-osh hplip-3.21.2/prnt/hpcups/genPCLm.cpp
--- hplip-3.21.2/prnt/hpcups/genPCLm.cpp.CVE-2026-8631-osh 2026-07-03 08:25:17.717888763 +0200
+++ hplip-3.21.2/prnt/hpcups/genPCLm.cpp 2026-07-03 08:48:22.225130940 +0200
@@ -1922,7 +1922,10 @@ int PCLmGenerator::Encapsulate(void *pI
int whiteStripLen=0;
if(!safe_mul_int_positive(thisHeight, currSourceWidth, &whiteStripLen) ||
!safe_mul_int_positive(whiteStripLen, srcNumComponents, &whiteStripLen))
+ {
+ free(newStripPtr);
return(errorOutAndCleanUp());
+ }
bool whiteStrip=isWhiteStrip(pInBuffer, whiteStripLen);
if(DebugIt2)
{
@@ -1944,11 +1947,17 @@ int PCLmGenerator::Encapsulate(void *pI
ubyte whitePt=0xff;
size_t tmpStripSize=0;
if(!safe_mul_size_t((size_t)scanlineWidth, (size_t)topMarginInPix, &tmpStripSize))
+ {
+ free(newStripPtr);
return(errorOutAndCleanUp());
+ }
ubyte *tmpStrip=(ubyte*)malloc(tmpStripSize);
if(!tmpStrip)
+ {
+ free(newStripPtr);
return(errorOutAndCleanUp());
+ }
memset(tmpStrip,whitePt,tmpStripSize);
@@ -2016,7 +2025,10 @@ int PCLmGenerator::Encapsulate(void *pI
{
int sourceLen=0;
if(!safe_mul_int_positive(numLinesThisCall, scanlineWidth, &sourceLen))
+ {
+ free(newStripPtr);
return(errorOutAndCleanUp());
+ }
uint32 len=(uint32)sourceLen;
uLongf destSize=len;
@@ -2025,12 +2037,18 @@ int PCLmGenerator::Encapsulate(void *pI
ubyte whitePt=0xff;
size_t tmpStripSize=0;
if(!safe_mul_size_t((size_t)scanlineWidth, (size_t)topMarginInPix, &tmpStripSize))
+ {
+ free(newStripPtr);
return(errorOutAndCleanUp());
+ }
// We need to inject a blank image-strip with a height==topMarginInPix
ubyte *tmpStrip=(ubyte*)malloc(tmpStripSize);
if(!tmpStrip)
+ {
+ free(newStripPtr);
return(errorOutAndCleanUp());
+ }
uLongf tmpDestSize=destSize;
memset(tmpStrip,whitePt,tmpStripSize);
@@ -2079,20 +2097,29 @@ int PCLmGenerator::Encapsulate(void *pI
{
int sourceLen=0;
if(!safe_mul_int_positive(numLinesThisCall, scanlineWidth, &sourceLen))
+ {
+ free(newStripPtr);
return(errorOutAndCleanUp());
+ }
if(firstStrip && topMarginInPix)
{
ubyte whitePt=0xff;
size_t tmpStripSize=0;
if(!safe_mul_size_t((size_t)scanlineWidth, (size_t)topMarginInPix, &tmpStripSize))
+ {
+ free(newStripPtr);
return(errorOutAndCleanUp());
+ }
// We need to inject a blank image-strip with a height==topMarginInPix
ubyte *tmpStrip=(ubyte*)malloc(tmpStripSize);
if(!tmpStrip)
+ {
+ free(newStripPtr);
return(errorOutAndCleanUp());
+ }
memset(tmpStrip,whitePt,tmpStripSize);
for(sint32 stripCntr=0; stripCntr<numFullInjectedStrips;stripCntr++)

View file

@ -1,16 +1,3 @@
diff -up hplip-3.23.3/setup.py.add-ppd-crash hplip-3.23.3/setup.py
--- hplip-3.23.3/setup.py.add-ppd-crash 2023-03-28 09:26:11.000000000 +0200
+++ hplip-3.23.3/setup.py 2023-05-29 13:55:03.443497903 +0200
@@ -553,6 +553,9 @@ else: # INTERACTIVE_MODE
if file_path.endswith('.gz'):
nickname = gzip.GzipFile(file_path, 'r').read(4096)
+ if sys.version_info[0] > 2:
+ nickname = nickname.decode('utf-8')
+
else:
nickname = open(file_path, 'r').read(4096)
diff -up hplip-3.23.3/ui5/setupdialog.py.add-ppd-crash hplip-3.23.3/ui5/setupdialog.py
--- hplip-3.23.3/ui5/setupdialog.py.add-ppd-crash 2023-05-29 13:55:03.443497903 +0200
+++ hplip-3.23.3/ui5/setupdialog.py 2023-05-29 13:57:19.014700721 +0200

40
hplip-curl-fallback.patch Normal file
View file

@ -0,0 +1,40 @@
diff --git a/installer/pluginhandler.py b/installer/pluginhandler.py
index c2e2a94..d10d1b9 100755
--- a/installer/pluginhandler.py
+++ b/installer/pluginhandler.py
@@ -36,7 +36,7 @@ def get_checksum(s):
PLUGIN_STATE_FILE = '/var/lib/hp/hplip.state'
-PLUGIN_FALLBACK_LOCATION = 'https://developers.hp.com/sites/default/files/'
+PLUGIN_FALLBACK_LOCATION = 'https://developers.hp.com/sites/default/files/2026-05/'
@@ -281,7 +281,7 @@ class PluginHandle(object):
else:
curl = utils.which("curl", True)
if curl:
- cmd = "%s --create-dirs -O --output-dir %s --location %s" % (curl,self.__plugin_path,src)
+ cmd = "%s -f --create-dirs -O --output-dir %s --location %s" % (curl,self.__plugin_path,src)
log.debug(cmd)
status, output = utils.run(cmd)
log.debug("curl returned: %d" % status)
@@ -290,7 +290,7 @@ class PluginHandle(object):
if status != 0 or os_utils.getFileSize(plugin_file) <= 0:
src = os.path.join(PLUGIN_FALLBACK_LOCATION, self.__plugin_name)
log.info("Plugin is not accessible. Trying to download it from fallback location: [%s]" % src)
- cmd = "%s --create-dirs -O --output-dir %s --location %s" % (curl,self.__plugin_path,src)
+ cmd = "%s -f --user-agent 'Mozilla/5.0 (compatible; hplip-plugin/1.0)' --create-dirs -O --output-dir %s --location %s" % (curl,self.__plugin_path,src)
log.debug(cmd)
status, output = utils.run(cmd)
@@ -318,7 +318,7 @@ class PluginHandle(object):
if digsig_url.startswith('file://'):
status, filename = utils.download_from_network(digsig_url, digsig_file, True)
else:
- cmd = "%s --create-dirs -O --output-dir %s --location %s" % (curl, self.__plugin_path,digsig_url)
+ cmd = "%s -f --user-agent 'Mozilla/5.0 (compatible; hplip-plugin/1.0)' --create-dirs -O --output-dir %s --location %s" % (curl, self.__plugin_path,digsig_url)
log.debug(cmd)
status, output = utils.run(cmd)
except IOError as e:

View file

@ -10,47 +10,3 @@ index 99bda7b..0f90f92 100644
self.prev_length = len(y)
self.spinner_pos = (self.spinner_pos + 1) % 8
diff --git a/base/validation.py b/base/validation.py
index ee6b05a..5e955dc 100644
--- a/base/validation.py
+++ b/base/validation.py
@@ -42,8 +42,11 @@ class DigiSign_Verification(object):
class GPG_Verification(DigiSign_Verification):
- def __init__(self, pgp_site = 'pgp.mit.edu', key = 0x4ABA2F66DBD5A95894910E0673D770CDA59047B9):
- self.__pgp_site = pgp_site
+ def __init__(self, keyservers = ['keyserver.ubuntu.com',
+ 'pgp.surf.nl',
+ 'pgp.mit.edu'],
+ key = 0x4ABA2F66DBD5A95894910E0673D770CDA59047B9):
+ self.__keyservers = keyservers
self.__key = key
self.__gpg = utils.which('gpg',True)
@@ -82,13 +85,18 @@ class GPG_Verification(DigiSign_Verification):
def __acquire_gpg_key(self):
-
- cmd = '%s --homedir %s --no-permission-warning --keyserver %s --recv-keys 0x%X' \
- % (self.__gpg, self.__gpg_dir, self.__pgp_site, self.__key)
-
- log.info("Receiving digital keys: %s" % cmd)
- status, output = utils.run(cmd)
- log.debug(output)
+ for kserver in self.__keyservers:
+ cmd = '%s --homedir %s --no-permission-warning --keyserver %s --recv-keys 0x%X' \
+ % (self.__gpg, self.__gpg_dir, kserver, self.__key)
+
+ log.info("Receiving digital keys: %s" % cmd)
+ status, output = utils.run(cmd)
+ log.debug(output)
+
+ if not status:
+ break
+ log.info("Receiving keys from {} failed, trying the next keyserver."
+ .format(kserver))
self.__change_owner(True)

View file

@ -1,13 +0,0 @@
diff --git a/base/utils.py b/base/utils.py
index e2de550..55848b8 100644
--- a/base/utils.py
+++ b/base/utils.py
@@ -474,7 +474,7 @@ def sort_dict_by_value(d):
def commafy(val):
- return locale.format("%s", val, grouping=True)
+ return locale.format_string("%s", val, grouping=True)
def format_bytes(s, show_bytes=False):

View file

@ -1,13 +0,0 @@
diff --git a/base/validation.py b/base/validation.py
index 23645c6..a8e3253 100644
--- a/base/validation.py
+++ b/base/validation.py
@@ -45,7 +45,7 @@ class GPG_Verification(DigiSign_Verification):
def __init__(self, keyservers = ['keyserver.ubuntu.com',
'pgp.surf.nl',
'pgp.mit.edu'],
- key = 0x4ABA2F66DBD5A95894910E0673D770CDA59047B9):
+ key = 0x82FFA7C6AA7411D934BDE173AC69536A2CF3A243):
self.__keyservers = keyservers
self.__key = key
self.__gpg = utils.which('gpg',True)

41
hplip-plugin-stdout.patch Normal file
View file

@ -0,0 +1,41 @@
diff --git a/base/os_utils.py b/base/os_utils.py
index 82a8b42..d918822 100644
--- a/base/os_utils.py
+++ b/base/os_utils.py
@@ -26,6 +26,7 @@ import locale
import stat
import subprocess
import shlex
+import sys
#Local
from . import logger
@@ -37,17 +38,22 @@ def execute(cmd):
try:
# Use shlex.split to safely split the command into arguments
args = shlex.split(cmd)
- process = subprocess.Popen(args,stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ process = subprocess.Popen(args,stdout=sys.stdout, stderr=sys.stderr, stdin=sys.stdin)
process.wait()
stdout, stderr = process.communicate()
- log.debug(f"Command executed: {cmd}\n{stdout.decode()}")
+
+ log.debug(f"Command executed: {cmd}{f'\n{stdout.decode()}' if stdout else ''}")
+
if process.returncode != 0:
- error_message = f"Command failed with return code {process.returncode}: {cmd}\n{stderr.decode()}"
- log.error(error_message)
+ log.error(f"Command failed with return code" \
+ f"{process.returncode}: {cmd}" \
+ f"{f'\n{stderr.decode()}' if stderr else ''}")
+
return process.returncode
except subprocess.CalledProcessError as e:
- error_message = f"Command failed with return code {e.returncode}: {cmd}\n{e.stderr.decode()}"
- log.error(error_message)
+ log.error(f"Command failed with return code" \
+ f"{e.returncode}: {cmd}" \
+ f"{f'\n{e.stderr.decode()}' if e.stderr else ''}")
return e.returncode
except Exception as e:
log.error(f"Error executing command: {cmd}\n{str(e)}")

View file

@ -19,7 +19,7 @@ rm hplip-$VERSION/locatedriver
tar -cjvf hplip-$VERSION-repack.tar.gz hplip-$VERSION || exit 1
# check whether plugin is available
wget -O hplip-plugin.run https://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/hplip-$1-plugin.run || wget -O hplip-plugin.run https://developers.hp.com/sites/default/files/hplip-$1-plugin.run || exit 1
wget -O hplip-plugin.run https://www.openprinting.org/download/printdriver/auxfiles/HP/plugins/hplip-$1-plugin.run || wget --user-agent='Mozilla/5.0 (compatible; hplip-plugin/1.0)' -O hplip-plugin.run https://developers.hp.com/sites/default/files/2026-05/hplip-$1-plugin.run || exit 1
# check whether the file is sane
file --mime hplip-plugin.run | grep 'x-shellscript' || exit 1

View file

@ -1,23 +1,7 @@
diff -up hplip-3.25.2/base/device.py.raw-strings hplip-3.25.2/base/device.py
diff -up hplip-3.25.2/base/g.py.raw-strings hplip-3.25.2/base/g.py
diff -up hplip-3.25.2/base/LedmWifi.py.raw-strings hplip-3.25.2/base/LedmWifi.py
--- hplip-3.25.2/base/LedmWifi.py.raw-strings 2025-02-27 13:12:29.000000000 +0100
+++ hplip-3.25.2/base/LedmWifi.py 2025-04-11 10:26:18.519166530 +0200
@@ -31,7 +31,7 @@ from .g import *
from . import device, utils
from .sixext import to_bytes_utf8
-http_result_pat = re.compile("""HTTP/\d.\d\s(\d+)""", re.I)
+http_result_pat = re.compile(r"""HTTP/\d.\d\s(\d+)""", re.I)
HTTP_OK = 200
HTTP_ACCEPTED = 202
HTTP_NOCONTENT = 204
diff -up hplip-3.25.2/base/logger.py.raw-strings hplip-3.25.2/base/logger.py
diff -up hplip-3.25.2/base/models.py.raw-strings hplip-3.25.2/base/models.py
diff -up hplip-3.25.2/base/password.py.raw-strings hplip-3.25.2/base/password.py
diff -up hplip-3.25.2/base/queues.py.raw-strings hplip-3.25.2/base/queues.py
--- hplip-3.25.2/base/queues.py.raw-strings 2025-04-11 10:26:18.512773352 +0200
+++ hplip-3.25.2/base/queues.py 2025-04-11 10:26:18.520514306 +0200
diff --git a/base/queues.py b/base/queues.py
index 0818574..8625f53 100755
--- a/base/queues.py
+++ b/base/queues.py
@@ -46,7 +46,7 @@ HPPS = 3
HPOTHER = 4
@ -36,12 +20,10 @@ diff -up hplip-3.25.2/base/queues.py.raw-strings hplip-3.25.2/base/queues.py
except AttributeError:
desc = ''
diff -up hplip-3.25.2/base/status.py.raw-strings hplip-3.25.2/base/status.py
diff -up hplip-3.25.2/base/tui.py.raw-strings hplip-3.25.2/base/tui.py
diff -up hplip-3.25.2/base/utils.py.raw-strings hplip-3.25.2/base/utils.py
diff -up hplip-3.25.2/check.py.raw-strings hplip-3.25.2/check.py
--- hplip-3.25.2/check.py.raw-strings 2025-02-27 13:12:29.000000000 +0100
+++ hplip-3.25.2/check.py 2025-04-11 10:26:18.521601431 +0200
diff --git a/check.py b/check.py
index 284b88e..86ca832 100755
--- a/check.py
+++ b/check.py
@@ -627,7 +627,7 @@ class DependenciesCheck(object):
status, output = utils.run("%s -d03f0:" % lsusb)
@ -60,9 +42,10 @@ diff -up hplip-3.25.2/check.py.raw-strings hplip-3.25.2/check.py
pat = re.compile('''.*:(.*)''')
if pat.search(g):
out = out +' '+ pat.search(g).group(1)
diff -up hplip-3.25.2/fax/soapfax.py.raw-strings hplip-3.25.2/fax/soapfax.py
--- hplip-3.25.2/fax/soapfax.py.raw-strings 2025-02-27 13:12:29.000000000 +0100
+++ hplip-3.25.2/fax/soapfax.py 2025-04-11 10:26:18.521745824 +0200
diff --git a/fax/soapfax.py b/fax/soapfax.py
index 9865726..344cb34 100644
--- a/fax/soapfax.py
+++ b/fax/soapfax.py
@@ -42,7 +42,7 @@ from base.sixext import to_bytes_utf8
# **************************************************************************** #
@ -72,10 +55,10 @@ diff -up hplip-3.25.2/fax/soapfax.py.raw-strings hplip-3.25.2/fax/soapfax.py
TIME_FORMAT_AM_PM = 1
diff -up hplip-3.25.2/installer/dcheck.py.raw-strings hplip-3.25.2/installer/dcheck.py
diff -up hplip-3.25.2/makeuri.py.raw-strings hplip-3.25.2/makeuri.py
--- hplip-3.25.2/makeuri.py.raw-strings 2025-02-27 13:12:29.000000000 +0100
+++ hplip-3.25.2/makeuri.py 2025-04-11 10:26:18.522024483 +0200
diff --git a/makeuri.py b/makeuri.py
index 4a10de8..6343e31 100755
--- a/makeuri.py
+++ b/makeuri.py
@@ -46,7 +46,7 @@ USAGE = [ (__doc__, "", "name", True),
("DEVNODE (parallel only):", '"/dev/parportX", X=0,1,2,...', "option", False),
("SERIAL NO. (usb and parallel only):", '"serial no."', "option", True),
@ -85,10 +68,10 @@ diff -up hplip-3.25.2/makeuri.py.raw-strings hplip-3.25.2/makeuri.py
("Show the CUPS URI only (quiet mode):", "-c or --cups", "option", False),
("Show the SANE URI only (quiet mode):", "-s or --sane", "option", False),
("Show the HP Fax URI only (quiet mode):", "-f or --fax", "option", False),
diff -up hplip-3.25.2/prnt/cups.py.raw-strings hplip-3.25.2/prnt/cups.py
diff -up hplip-3.25.2/probe.py.raw-strings hplip-3.25.2/probe.py
--- hplip-3.25.2/probe.py.raw-strings 2025-02-27 13:12:29.000000000 +0100
+++ hplip-3.25.2/probe.py 2025-04-11 10:26:18.522312569 +0200
diff --git a/probe.py b/probe.py
index 2041fb6..2b43ece 100755
--- a/probe.py
+++ b/probe.py
@@ -42,11 +42,11 @@ USAGE = [(__doc__, "", "name", True),
("Usage: %s [OPTIONS]" % __mod__, "", "summary", True),
utils.USAGE_OPTIONS,
@ -103,21 +86,3 @@ diff -up hplip-3.25.2/probe.py.raw-strings hplip-3.25.2/probe.py
("Search:", "-s<search re> or --search=<search re>", "option", False),
("", "<search re> must be a valid regular expression (not case sensitive)", "option", False),
("Network discovery method:", "-m<method> or --method=<method>: <method> is 'slp'* or 'mdns'.", "option", False),
diff -up hplip-3.25.2/scan.py.raw-strings hplip-3.25.2/scan.py
diff -up hplip-3.25.2/setup.py.raw-strings hplip-3.25.2/setup.py
--- hplip-3.25.2/setup.py.raw-strings 2025-04-11 10:26:18.496992045 +0200
+++ hplip-3.25.2/setup.py 2025-04-11 10:26:18.522775511 +0200
@@ -79,11 +79,11 @@ USAGE = [ (__doc__, "", "name", True),
utils.USAGE_SPACE,
utils.USAGE_OPTIONS,
("Automatic mode:", "-a or --auto (-i mode only)", "option", False),
- ("To specify the port on a multi-port JetDirect:", "--port=<port> (Valid values are 1\*, 2, and 3. \*default)", "option", False),
+ ("To specify the port on a multi-port JetDirect:", r"--port=<port> (Valid values are 1\*, 2, and 3. \*default)", "option", False),
("No testpage in automatic mode:", "-x (-i mode only)", "option", False),
("To specify a CUPS printer queue name:", "-p<printer> or --printer=<printer> (-i mode only)", "option", False),
("To specify a CUPS fax queue name:", "-f<fax> or --fax=<fax> (-i mode only)", "option", False),
- ("Type of queue(s) to install:", "-t<typelist> or --type=<typelist>. <typelist>: print*, fax\* (\*default) (-i mode only)", "option", False),
+ ("Type of queue(s) to install:", r"-t<typelist> or --type=<typelist>. <typelist>: print*, fax\* (\*default) (-i mode only)", "option", False),
("To specify the device URI to install:", "-d<device> or --device=<device> (--qt4 mode only)", "option", False),
("Remove printers or faxes instead of setting-up:", "-r or --rm or --remove", "option", False),
utils.USAGE_LANGUAGE,

View file

@ -6,8 +6,8 @@
Summary: HP Linux Imaging and Printing Project
Name: hplip
Version: 3.25.6
Release: 1%{?dist}
Version: 3.26.4
Release: 9%{?dist}
# most files (base/*, *, ui*/...) - GPL2+
# prnt/hpijs/ jpeg related files - IJG
# prnt/* - BSD-3-Clause-HP - it is modified a little, asked here https://gitlab.com/fedora/legal/fedora-license-data/-/issues/267
@ -76,6 +76,8 @@ Patch30: hplip-hpfax-importerror-print.patch
Patch31: hplip-wifisetup.patch
# pgp.mit.edu keyserver got bad connection, so we need to have pool of keyservers
# to choose (Bz#1641100, launchpad#1799212)
# F42+ update: HP has new key, and currently only on Ubuntu keyserver - so this patch now
# only adjust terminal output, we will see if connection problems reappear
Patch32: hplip-keyserver.patch
# QMessagebox call was copy-pasted from Qt4 version, but Qt5 has different arguments,
# This patch solves most of them
@ -235,24 +237,32 @@ Patch67: hplip-use-raw-strings.patch
# FTBFS GCC 14
# https://bugs.launchpad.net/hplip/+bug/2048780
Patch68: hplip-hpaio-gcc14.patch
# format is no longer method in locale module
# https://bugs.launchpad.net/hplip/+bug/2045507
Patch69: hplip-locale-format.patch
# function prototype did not specify argument's data types
# https://bugs.launchpad.net/hplip/+bug/2096650
Patch70: hplip-gcc15-stdc23.patch
Patch69: hplip-gcc15-stdc23.patch
# status history table shows unformatted QDateTime values
# https://bugs.launchpad.net/hplip/+bug/1956547
Patch71: hplip-format-qdatetime.patch
Patch70: hplip-format-qdatetime.patch
# Python 3.14 removed urlopener
# https://bugs.launchpad.net/hplip/+bug/2115046
Patch72: hplip-no-urlopener.patch
Patch71: hplip-no-urlopener.patch
# hp-scan command failed to run and gives an error (fedora#2395809)
# https://bugs.launchpad.net/hplip/+bug/2124268
Patch73: hplip-scan-size.patch
# HP uses new GPG key, but hplip code does not use it
# https://developers.hp.com/hp-linux-imaging-and-printing/hplipDigitalCertificate.html
Patch74: hplip-new-gpg-key.patch
Patch72: hplip-scan-size.patch
# 3.25.8 brings new implementation for calling commands in subprocess,
# but again directs I/O into pipes, which does not work for TUI plugin
# installation. Additionally it tracebacks if stdout/stderr is None
# https://bugs.launchpad.net/hplip/+bug/2110101
Patch73: hplip-plugin-stdout.patch
# Fallbacking to HP site for plugin does not work for several reasons:
# - curl was not called with -f, so error 404 from openprinting did not propagated,
# - HP fallback URL in hplip does not contain latest changes - it now has YYYY-MM in it,
# - connecting to HP site requires curl/wget to set user-agent to pretend to be a browser
# https://bugs.launchpad.net/hplip/+bug/2154206
Patch74: hplip-curl-fallback.patch
# OSH fixes after CVE-2026-8631
# https://bugs.launchpad.net/hplip/+bug/2156584
Patch75: hplip-CVE-2026-8631-osh.patch
%if 0%{?fedora} || 0%{?rhel} <= 8
# mention hplip-gui if you want to have GUI
@ -606,19 +616,20 @@ done
# FTBFS GCC 14
# https://bugs.launchpad.net/hplip/+bug/2048780
%patch -P 68 -p1 -b .hpaio-gcc14
# format is no longer method in locale module
# https://bugs.launchpad.net/hplip/+bug/2045507
%patch -P 69 -p1 -b .locale-format
# https://bugs.launchpad.net/hplip/+bug/2096650
%patch -P 70 -p1 -b .gcc-strc23
%patch -P 69 -p1 -b .gcc-strc23
# https://bugs.launchpad.net/hplip/+bug/1956547
%patch -P 71 -p1 -b .format-qdatetime
%patch -P 70 -p1 -b .format-qdatetime
# https://bugs.launchpad.net/hplip/+bug/2115046
%patch -P 72 -p1 -b .no-urlopener
%patch -P 71 -p1 -b .no-urlopener
# https://bugs.launchpad.net/hplip/+bug/2124268
%patch -P 73 -p1 -b .scan-size
# Use new GPG key from Ubuntu keyserver
%patch -P 74 -p1 -b .new-gpg-key
%patch -P 72 -p1 -b .scan-size
# https://bugs.launchpad.net/hplip/+bug/2110101
%patch -P 73 -p1 -b .plugin-stdout
# https://bugs.launchpad.net/hplip/+bug/2154206
%patch -P 74 -p1 -b .curl-fallback
# OSH fixes after CVE-2026-8631
%patch -P 75 -p1 -b .cve-2026-8631-osh
# Fedora specific patches now, don't put a generic patches under it
%if 0%{?fedora} || 0%{?rhel} <= 8
@ -990,6 +1001,40 @@ find doc/images -type f -exec chmod 644 {} \;
%config(noreplace) %{_sysconfdir}/sane.d/dll.d/hpaio
%changelog
* Wed Jul 22 2026 Python Maint <python-maint@redhat.com> - 3.26.4-9
- Rebuilt for Python 3.15.0b4 ABI change
* Thu Jul 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 3.26.4-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
* Fri Jul 03 2026 Zdenek Dohnal <zdohnal@redhat.com> - 3.26.4-7
- fix CVE-2026-14544 - incomplete fix after CVE-2026-8631 (fedora#2496773,
fedora#2496772)
* Mon Jun 15 2026 Zdenek Dohnal <zdohnal@redhat.com> - 3.26.4-6
- Fix more leaks after CVE-2026-8632 fix
* Fri Jun 12 2026 Yaakov Selkowitz <yselkowi@redhat.com> - 3.26.4-5
- Rebuilt for openssl 4.0
* Fri Jun 12 2026 Zdenek Dohnal <zdohnal@redhat.com> - 3.26.4-4
- OSH fixes after CVE-2026-8631
* Wed Jun 03 2026 Python Maint <python-maint@redhat.com> - 3.26.4-3
- Rebuilt for Python 3.15
* Tue May 26 2026 Zdenek Dohnal <zdohnal@redhat.com> - 3.26.4-2
- Fix location+user-agent of plugin in hp-plugin-download
* Mon May 25 2026 Zdenek Dohnal <zdohnal@redhat.com> - 3.26.4-1
- 3.26.4 (fedora#2480158), fixes CVE-2026-8631, CVE-2026-8632
* Fri Jan 23 2026 Benjamin A. Beasley <code@musicinmybrain.net> - 3.25.8-2
- Rebuilt for net-snmp 5.9.5.2
* Fri Jan 09 2026 Zdenek Dohnal <zdohnal@redhat.com> - 3.25.8-1
- hplip-3.25.8 is available (fedora#2415311)
* Wed Sep 17 2025 Zdenek Dohnal <zdohnal@redhat.com> - 3.25.6-1
- hp-scan command failed to run and gives an error (fedora#2395809)
- use new GPG key from HP - new key was used as fix for CVE-2025-43023

View file

@ -1 +1 @@
SHA512 (hplip-3.25.6-repack.tar.gz) = 1b431142e2516e383d5fcbaa1487c5a680b60a409bec02de4526ac82d2a88a4b2b28f3813740ae8f7f32f02d058ae6e986efc8e57a30d1c560132dc4014b87b4
SHA512 (hplip-3.26.4-repack.tar.gz) = e46eb44780afdc13f975a2de23a7fcef51659d96506125a76f23f9e47135a6bd3aab60f70f4b52ad088714f967031324c9f537b4af21e394a49eae9bb94742f4