PKGBUILDs/extra/libjpeg-turbo/overrun.patch
2014-11-27 17:56:43 +00:00

22 lines
876 B
Diff

diff -Naur old/jchuff.c new/jchuff.c
--- old/jchuff.c 2014-11-27 06:48:21.009442853 -1000
+++ new/jchuff.c 2014-11-27 06:48:46.289700004 -1000
@@ -391,7 +391,16 @@
#endif
-#define BUFSIZE (DCTSIZE2 * 2)
+/* Although it is exceedingly rare, it is possible for a Huffman-encoded
+ * coefficient block to be larger than the 128-byte unencoded block. For each
+ * of the 64 coefficients, PUT_BITS is invoked twice, and each invocation can
+ * theoretically store 16 bits (for a maximum of 2048 bits or 256 bytes per
+ * encoded block.) If, for instance, one artificially sets the AC
+ * coefficients to alternating values of 32767 and -32768 (using the JPEG
+ * scanning order-- 1, 8, 16, etc.), then this will produce an encoded block
+ * larger than 200 bytes.
+ */
+#define BUFSIZE (DCTSIZE2 * 4)
#define LOAD_BUFFER() { \
if (state->free_in_buffer < BUFSIZE) { \