mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-26 15:41:40 +00:00
hplip: patch imageProcessor segfault in hpcups
(#58949)
Beginning with version 3.18.7, `hpcups` fails with > DEBUG: imageProcessorStartPage failed and segfaults (tested with HP LaserJet 1000 printer). Upstream bug reports: * https://bugs.launchpad.net/hplip/+bug/1788706 * https://bugs.launchpad.net/hplip/+bug/1787289 There is a patch available in one of the reports: https://bugs.launchpad.net/hplip/+bug/1787289/+attachment/5176026/+files/hplip.patch It applies to 3.18.7, but not to later versions. This commit adds a slight adaption of the patch that applies to versions 3.18.9 -- 3.19.6. The patch fixes https://github.com/NixOS/nixpkgs/issues/58949 . Note that the patch is merely a workaround: It simply removes all calls into the ImageProcessor library from `HPCupsFilter.cpp`.
This commit is contained in:
parent
15aacfb450
commit
60311e0957
|
@ -82,6 +82,13 @@ pythonPackages.buildPythonApplication {
|
||||||
|
|
||||||
makeWrapperArgs = [ "--prefix" "PATH" ":" "${nettools}/bin" ];
|
makeWrapperArgs = [ "--prefix" "PATH" ":" "${nettools}/bin" ];
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# remove ImageProcessor usage, it causes segfaults, see
|
||||||
|
# https://bugs.launchpad.net/hplip/+bug/1788706
|
||||||
|
# https://bugs.launchpad.net/hplip/+bug/1787289
|
||||||
|
./image-processor.patch
|
||||||
|
];
|
||||||
|
|
||||||
prePatch = ''
|
prePatch = ''
|
||||||
# HPLIP hardcodes absolute paths everywhere. Nuke from orbit.
|
# HPLIP hardcodes absolute paths everywhere. Nuke from orbit.
|
||||||
find . -type f -exec sed -i \
|
find . -type f -exec sed -i \
|
||||||
|
|
62
pkgs/misc/drivers/hplip/image-processor.patch
Normal file
62
pkgs/misc/drivers/hplip/image-processor.patch
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
diff --git i/prnt/hpcups/HPCupsFilter.cpp w/prnt/hpcups/HPCupsFilter.cpp
|
||||||
|
index 5b282d8..153ee3a 100644
|
||||||
|
--- i/prnt/hpcups/HPCupsFilter.cpp
|
||||||
|
+++ w/prnt/hpcups/HPCupsFilter.cpp
|
||||||
|
@@ -31,7 +31,6 @@
|
||||||
|
\*****************************************************************************/
|
||||||
|
|
||||||
|
#include "HPCupsFilter.h"
|
||||||
|
-#include "ImageProcessor.h"
|
||||||
|
|
||||||
|
#include <signal.h>
|
||||||
|
#include <sys/wait.h>
|
||||||
|
@@ -637,16 +636,10 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster)
|
||||||
|
|
||||||
|
|
||||||
|
sprintf(hpPreProcessedRasterFile, "%s/hp_%s_cups_SwapedPagesXXXXXX",CUPS_TMP_DIR, m_JA.user_name);
|
||||||
|
- image_processor_t* imageProcessor = imageProcessorCreate();
|
||||||
|
|
||||||
|
while (cupsRasterReadHeader2(cups_raster, &cups_header))
|
||||||
|
{
|
||||||
|
|
||||||
|
- IMAGE_PROCESSOR_ERROR result = imageProcessorStartPage(imageProcessor, &cups_header);
|
||||||
|
- if (result != IPE_SUCCESS){
|
||||||
|
- dbglog("DEBUG: imageProcessorStartPage failed result = %d\n", result);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
current_page_number++;
|
||||||
|
|
||||||
|
if (current_page_number == 1) {
|
||||||
|
@@ -745,11 +738,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster)
|
||||||
|
color_raster = rgbRaster;
|
||||||
|
black_raster = kRaster;
|
||||||
|
|
||||||
|
- result = imageProcessorProcessLine(imageProcessor, m_pPrinterBuffer, cups_header.cupsBytesPerLine);
|
||||||
|
- if (result != IPE_SUCCESS){
|
||||||
|
- dbglog("DEBUG: imageProcessorProcessLine failed result = %d\n", result);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
|
||||||
|
if ((y == 0) && !is_ljmono) {
|
||||||
|
//For ljmono, make sure that first line is not a blankRaster line.Otherwise printer
|
||||||
|
@@ -780,11 +768,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster)
|
||||||
|
}
|
||||||
|
} // for() loop end
|
||||||
|
|
||||||
|
- result = imageProcessorEndPage(imageProcessor);
|
||||||
|
- if (result != IPE_SUCCESS){
|
||||||
|
- dbglog("DEBUG: imageProcessorEndPage failed result = %d\n", result);
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
|
||||||
|
m_Job.NewPage();
|
||||||
|
if (err != NO_ERROR) {
|
||||||
|
@@ -800,8 +783,6 @@ int HPCupsFilter::processRasterData(cups_raster_t *cups_raster)
|
||||||
|
rgbRaster = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
- imageProcessorDestroy(imageProcessor);
|
||||||
|
-
|
||||||
|
unlink(hpPreProcessedRasterFile);
|
||||||
|
return ret_status;
|
||||||
|
}
|
Loading…
Reference in a new issue