Merge pull request #1366 from sebras/fix-out-of-bounds-access

opj_j2k_is_imf_compliant: Fix out of bounds access
This commit is contained in:
Even Rouault 2021-07-12 15:58:06 +02:00 committed by GitHub
commit 67f8a1e430
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 15 additions and 13 deletions

View File

@ -7101,19 +7101,21 @@ static OPJ_BOOL opj_j2k_is_imf_compliant(opj_cparameters_t *parameters,
mainlevel); mainlevel);
ret = OPJ_FALSE; ret = OPJ_FALSE;
} }
else
/* Validate sublevel */ {
assert(sizeof(tabMaxSubLevelFromMainLevel) == /* Validate sublevel */
(OPJ_IMF_MAINLEVEL_MAX + 1) * sizeof(tabMaxSubLevelFromMainLevel[0])); assert(sizeof(tabMaxSubLevelFromMainLevel) ==
if (sublevel > tabMaxSubLevelFromMainLevel[mainlevel]) { (OPJ_IMF_MAINLEVEL_MAX + 1) * sizeof(tabMaxSubLevelFromMainLevel[0]));
opj_event_msg(p_manager, EVT_WARNING, if (sublevel > tabMaxSubLevelFromMainLevel[mainlevel]) {
"IMF profile require sublevel <= %d for mainlevel = %d.\n" opj_event_msg(p_manager, EVT_WARNING,
"-> %d is thus not compliant\n" "IMF profile require sublevel <= %d for mainlevel = %d.\n"
"-> Non-IMF codestream will be generated\n", "-> %d is thus not compliant\n"
tabMaxSubLevelFromMainLevel[mainlevel], "-> Non-IMF codestream will be generated\n",
mainlevel, tabMaxSubLevelFromMainLevel[mainlevel],
sublevel); mainlevel,
ret = OPJ_FALSE; sublevel);
ret = OPJ_FALSE;
}
} }
/* Number of components */ /* Number of components */