openjp2/j2k: Validate all SGcod/SPcod/SPcoc parameter values. 1211/head
authorSebastian Rasmussen <sebras@gmail.com>
Wed, 31 Oct 2018 14:56:11 +0000 (15:56 +0100)
committerSebastian Rasmussen <sebras@gmail.com>
Wed, 4 Sep 2019 03:14:41 +0000 (05:14 +0200)
commitf3ee448815eb992b8d4746e32c05e8289f30415f
treec57673ce38422ace3bc503a2305770ccfad4e17e
parentd801bd4e6287d13b65a48775ebd43fca350b21d9
openjp2/j2k: Validate all SGcod/SPcod/SPcoc parameter values.

Previously the multiple component transformation SGcod(C)
and wavelet transformation SPcod(H)/SPcoc(E) parameter
values were never checked, allowing for out of range values.

The lack of validation allowed the bit stream provided in
issue #1158 through. After this commit an error message
points to the marker segments' parameters as being out of
range.

input/nonregression/edf_c2_20.jp2 contains an SPcod(H) value
of 17, but according to Table A-20 of the specification only
values 0 and 1 are valid. input/nonregression/issue826.jp2
contains a SGcod(B) value of 2, but according to Table A-17
of the specification only values 0 and 1 are valid.
input/nonregression/oss-fuzz2785.jp2 contains a SGcod(B)
value of 32, but it is likewise limited to 0 or 1. These test
cases have been updated to consistently fail to parse the
headers since they contain out of bounds values.

This fixes issue #1210.
src/lib/openjp2/j2k.c
tests/nonregression/CMakeLists.txt