File: 0007-check-error-for-jpeg_read_scanlines.patch

package info (click to toggle)
libsixel 1.8.6-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 13,632 kB
  • sloc: ansic: 23,497; sh: 8,443; cpp: 1,227; python: 526; makefile: 444; xml: 271; ruby: 31; perl: 26
file content (26 lines) | stat: -rw-r--r-- 930 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
From: NOKUBI Takatsugu <knok@daionet.gr.jp>
Date: Fri, 30 Aug 2019 11:33:15 +0900
Subject: check error for jpeg_read_scanlines

---
 src/loader.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/loader.c b/src/loader.c
index cb1e61f..823571d 100644
--- a/src/loader.c
+++ b/src/loader.c
@@ -195,7 +195,12 @@ load_jpeg(unsigned char **result,
 
     while (cinfo.output_scanline < cinfo.output_height) {
         jpeg_read_scanlines(&cinfo, buffer, 1);
-        memcpy(*result + (cinfo.output_scanline - 1) * row_stride, buffer[0], row_stride);
+        if (cinfo.err->num_warnings > 0) {
+            sixel_helper_set_additional_message(
+                "jpeg_read_scanlines: error/warining occuered.");
+            status = SIXEL_BAD_INPUT;
+            goto end;
+        }        memcpy(*result + (cinfo.output_scanline - 1) * row_stride, buffer[0], row_stride);
     }
 
     status = SIXEL_OK;