1+ 2.1.5
2+ =====
3+
4+ ### Significant changes relative to 2.1.4:
5+
6+ 1 . Fixed issues in the build system whereby, when using the Ninja Multi-Config
7+ CMake generator, a static build of libjpeg-turbo (a build in which
8+ ` ENABLE_SHARED ` is ` 0 ` ) could not be installed, a Windows installer could not
9+ be built, and the Java regression tests failed.
10+
11+ 2 . Fixed a regression introduced by 2.0 beta1[ 15] that caused a buffer overrun
12+ in the progressive Huffman encoder when attempting to transform a
13+ specially-crafted malformed 12-bit-per-component JPEG image into a progressive
14+ 12-bit-per-component JPEG image using a 12-bit-per-component build of
15+ libjpeg-turbo (` -DWITH_12BIT=1 ` .) Given that the buffer overrun was fully
16+ contained within the progressive Huffman encoder structure and did not cause a
17+ segfault or other user-visible errant behavior, given that the lossless
18+ transformer (unlike the decompressor) is not generally exposed to arbitrary
19+ data exploits, and given that 12-bit-per-component builds of libjpeg-turbo are
20+ uncommon, this issue did not likely pose a security risk.
21+
22+ 3 . Fixed an issue whereby, when using a 12-bit-per-component build of
23+ libjpeg-turbo (` -DWITH_12BIT=1 ` ), passing samples with values greater than 4095
24+ or less than 0 to ` jpeg_write_scanlines() ` caused a buffer overrun or underrun
25+ in the RGB-to-YCbCr color converter.
26+
27+ 4 . Fixed a floating point exception that occurred when attempting to use the
28+ jpegtran ` -drop ` and ` -trim ` options to losslessly transform a
29+ specially-crafted malformed JPEG image.
30+
31+ 5 . Fixed an issue in ` tjBufSizeYUV2() ` whereby it returned a bogus result,
32+ rather than throwing an error, if the ` align ` parameter was not a power of 2.
33+ Fixed a similar issue in ` tjCompressFromYUV() ` whereby it generated a corrupt
34+ JPEG image in certain cases, rather than throwing an error, if the ` align `
35+ parameter was not a power of 2.
36+
37+ 6 . Fixed an issue whereby ` tjDecompressToYUV2() ` , which is a wrapper for
38+ ` tjDecompressToYUVPlanes() ` , used the desired YUV image dimensions rather than
39+ the actual scaled image dimensions when computing the plane pointers and
40+ strides to pass to ` tjDecompressToYUVPlanes() ` . This caused a buffer overrun
41+ and subsequent segfault if the desired image dimensions exceeded the scaled
42+ image dimensions.
43+
44+ 7 . Fixed an issue whereby, when decompressing a 12-bit-per-component JPEG image
45+ (` -DWITH_12BIT=1 ` ) using an alpha-enabled output color space such as
46+ ` JCS_EXT_RGBA ` , the alpha channel was set to 255 rather than 4095.
47+
48+ 8 . Fixed an issue whereby the Java version of TJBench did not accept a range of
49+ quality values.
50+
51+ 9 . Fixed an issue whereby, when ` -progressive ` was passed to TJBench, the JPEG
52+ input image was not transformed into a progressive JPEG image prior to
53+ decompression.
54+
55+
1562.1.4
257=====
358
4- ### Significant changes relative to 2.1.3
59+ ### Significant changes relative to 2.1.3:
560
6611 . Fixed a regression introduced in 2.1.3 that caused build failures with
762Visual Studio 2010.
@@ -36,7 +91,7 @@ virtual array access") under certain circumstances.
36912.1.3
3792=====
3893
39- ### Significant changes relative to 2.1.2
94+ ### Significant changes relative to 2.1.2:
4095
41961 . Fixed a regression introduced by 2.0 beta1[ 7] whereby cjpeg compressed PGM
4297input files into full-color JPEG images unless the ` -grayscale ` option was
@@ -60,7 +115,7 @@ be reproduced using the libjpeg API, not using djpeg.
601152.1.2
61116=====
62117
63- ### Significant changes relative to 2.1.1
118+ ### Significant changes relative to 2.1.1:
64119
651201 . Fixed a regression introduced by 2.1 beta1[ 13] that caused the remaining
66121GAS implementations of AArch64 (Arm 64-bit) Neon SIMD functions (which are used
@@ -92,7 +147,7 @@ image contains incomplete or corrupt image data.
921472.1.1
93148=====
94149
95- ### Significant changes relative to 2.1.0
150+ ### Significant changes relative to 2.1.0:
96151
971521 . Fixed a regression introduced in 2.1.0 that caused build failures with
98153non-GCC-compatible compilers for Un* x/Arm platforms.
@@ -121,7 +176,7 @@ transform a specially-crafted malformed JPEG image.
1211762.1.0
122177=====
123178
124- ### Significant changes relative to 2.1 beta1
179+ ### Significant changes relative to 2.1 beta1:
125180
1261811 . Fixed a regression introduced by 2.1 beta1[ 6(b)] whereby attempting to
127182decompress certain progressive JPEG images with one or more component planes of
@@ -156,10 +211,10 @@ progressive JPEG format described in the report
156211[ "Two Issues with the JPEG Standard"] ( https://libjpeg-turbo.org/pmwiki/uploads/About/TwoIssueswiththeJPEGStandard.pdf ) .
157212
1582137 . The PPM reader now throws an error, rather than segfaulting (due to a buffer
159- overrun) or generating incorrect pixels, if an application attempts to use the
160- ` tjLoadImage() ` function to load a 16-bit binary PPM file (a binary PPM file
161- with a maximum value greater than 255) into a grayscale image buffer or to load
162- a 16-bit binary PGM file into an RGB image buffer.
214+ overrun, CVE- 2021 -46822 ) or generating incorrect pixels, if an application
215+ attempts to use the ` tjLoadImage() ` function to load a 16-bit binary PPM file
216+ (a binary PPM file with a maximum value greater than 255) into a grayscale
217+ image buffer or to load a 16-bit binary PGM file into an RGB image buffer.
163218
1642198 . Fixed an issue in the PPM reader that caused incorrect pixels to be
165220generated when using the ` tjLoadImage() ` function to load a 16-bit binary PPM
@@ -325,11 +380,11 @@ methods in the TurboJPEG Java API.
325380
3263812 . Fixed or worked around multiple issues with ` jpeg_skip_scanlines() ` :
327382
328- - Fixed segfaults or "Corrupt JPEG data: premature end of data segment"
329- errors in ` jpeg_skip_scanlines() ` that occurred when decompressing 4:2:2 or
330- 4:2:0 JPEG images using merged (non-fancy) upsampling/color conversion (that
331- is, when setting ` cinfo.do_fancy_upsampling ` to ` FALSE ` .) 2.0.0 [ 6 ] was a
332- similar fix, but it did not cover all cases.
383+ - Fixed segfaults ( CVE- 2020 -35538) or "Corrupt JPEG data: premature end of
384+ data segment" errors in ` jpeg_skip_scanlines() ` that occurred when
385+ decompressing 4:2:2 or 4:2: 0 JPEG images using merged (non-fancy)
386+ upsampling/color conversion (that is, when setting ` cinfo.do_fancy_upsampling `
387+ to ` FALSE ` .) 2.0.0 [ 6 ] was a similar fix, but it did not cover all cases.
333388 - ` jpeg_skip_scanlines() ` now throws an error if two-pass color
334389quantization is enabled. Two-pass color quantization never worked properly
335390with ` jpeg_skip_scanlines() ` , and the issues could not readily be fixed.
0 commit comments