diff options
| author | Jörg Frings-Fürst <debian@jff.email> | 2024-12-11 13:07:06 +0100 | 
|---|---|---|
| committer | Jörg Frings-Fürst <debian@jff.email> | 2024-12-11 13:07:06 +0100 | 
| commit | e59cd23aa5d5fade23ff2fab22d19fe042dbeb68 (patch) | |
| tree | 5398345136f00437ea5619bca0db93a8d7375c78 /debian/patches/0185-fix_memory.patch | |
| parent | 980fc6b1eec7e58eb4ebaeb95f089b5c2c6ac053 (diff) | |
| parent | 2f664d818ad8c970ef1cf7f0618646cfb4f9dde0 (diff) | |
Merge branch 'release/debian/1.3.1-1'debian/1.3.1-1
Diffstat (limited to 'debian/patches/0185-fix_memory.patch')
| -rw-r--r-- | debian/patches/0185-fix_memory.patch | 62 | 
1 files changed, 62 insertions, 0 deletions
| diff --git a/debian/patches/0185-fix_memory.patch b/debian/patches/0185-fix_memory.patch new file mode 100644 index 0000000..137ae31 --- /dev/null +++ b/debian/patches/0185-fix_memory.patch @@ -0,0 +1,62 @@ +Description: Fix memory handling at backend/hp5590_low.c +Author:  +Origin: upstream, https://gitlab.com/sane-project/backends/-/merge_requests/857 +Bug: https://gitlab.com/sane-project/backends/-/issues/782 +     https://gitlab.com/sane-project/backends/-/issues/781 +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1071658 +            https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1071660 +Forwarded: not-needed +Applied-Upstream: https://gitlab.com/sane-project/backends/-/merge_requests/857 +Last-Update: 2024-12-08 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +diff --git a/backend/hp5590.c b/backend/hp5590.c +index 78c93132558365c8005c45fb756da57d1dfe9005..56acfb13c308f889daba472e05f1a03bb5967d18 100644 +--- a/backend/hp5590.c ++++ b/backend/hp5590.c +@@ -2154,6 +2154,24 @@ sane_read_internal (struct hp5590_scanner * scanner, SANE_Byte * data, +        max_length, +        scanner->transferred_image_size); +  ++  /* ++   * We will truncate down the buffer size to *under* what the ++   * internal USB reading buffer can supply. This will avoid page read issues ++   * at the end of the buffer. ++   * ++   * See: https://gitlab.com/sane-project/backends/-/issues/781 ++   * ++   */ ++  if (max_length > BULK_READ_PAGE_SIZE * MAX_READ_PAGES) ++    { ++      DBG (DBG_proc, "%s, truncating sane_read buffer from %u to %u\n", ++           __func__, ++           max_length, ++	   BULK_READ_PAGE_SIZE * MAX_READ_PAGES); ++ ++      max_length = BULK_READ_PAGE_SIZE * MAX_READ_PAGES; ++    } ++ +   SANE_Int length_limited = 0; +   *length = max_length; +   if ((unsigned long long) *length > scanner->transferred_image_size) +diff --git a/backend/hp5590_low.c b/backend/hp5590_low.c +index 2d19dcf951717919099995a402002e1d18822849..7038f438640c72ede3b9d01d09d14b750f2c0041 100644 +--- a/backend/hp5590_low.c ++++ b/backend/hp5590_low.c +@@ -99,9 +99,15 @@ struct usb_in_usb_ctrl_setup { + #define CORE_FLAG_NOT_READY             1 << 1 +  + /* Bulk transfers are done in pages, below their respective sizes */ ++/* ++ * Note that we limit the amount we can supply to sane_read() to avoid ++ * clashes with the size of the internal read buffer. ++ * ++ */ + #define BULK_WRITE_PAGE_SIZE            0x0f000 + #define BULK_READ_PAGE_SIZE             0x10000 +-#define ALLOCATE_BULK_READ_PAGES        16      /* 16 * 65536 = 1Mb */ ++#define ALLOCATE_BULK_READ_PAGES        17      /* 16 * 65536 = 1Mb */ ++#define MAX_READ_PAGES			16	/* maximum that we will return to sane_read() */ +  + /* Structure describing bulk read state, because bulk reads will be done in +  * pages, but function caller uses its own buffer, whose size is certainly | 
