Compare commits
12 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
47d2d96401 | ||
|
|
55a3f51a16 | ||
|
|
f608b603fd | ||
|
|
0a47faa5bb | ||
|
|
4a29f32186 | ||
|
|
4a4a2ad197 | ||
|
|
cdc9207430 | ||
|
|
8a72aa893c | ||
|
|
1943415016 | ||
|
|
68e652d439 | ||
|
|
05bb4ddaa1 | ||
|
|
075cac0afb |
13 changed files with 265 additions and 163 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
92
hplip-CVE-2026-8631-osh.patch
Normal file
92
hplip-CVE-2026-8631-osh.patch
Normal 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++)
|
||||
|
|
@ -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
40
hplip-curl-fallback.patch
Normal 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:
|
||||
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
@ -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
41
hplip-plugin-stdout.patch
Normal 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)}")
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
87
hplip.spec
87
hplip.spec
|
|
@ -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
|
||||
|
|
|
|||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (hplip-3.25.6-repack.tar.gz) = 1b431142e2516e383d5fcbaa1487c5a680b60a409bec02de4526ac82d2a88a4b2b28f3813740ae8f7f32f02d058ae6e986efc8e57a30d1c560132dc4014b87b4
|
||||
SHA512 (hplip-3.26.4-repack.tar.gz) = e46eb44780afdc13f975a2de23a7fcef51659d96506125a76f23f9e47135a6bd3aab60f70f4b52ad088714f967031324c9f537b4af21e394a49eae9bb94742f4
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue