summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMathieu Malaterre <mathieu.malaterre@gmail.com>2014-02-26 11:11:33 +0000
committerMathieu Malaterre <mathieu.malaterre@gmail.com>2014-02-26 11:11:33 +0000
commit29a29d62103cf180bdfee69409fd32c0375f1ab9 (patch)
tree580cb808b4344818c6924651f8550d2bea868fa5 /src
parent3a155ceda60ef29d97f4faa6dded7716af8a2ebe (diff)
[trunk] Import patch from sumatrapdf team. This handle testcase 451.pdf.SIGSEGV.ce9.3723
Update issue 225
Diffstat (limited to 'src')
-rw-r--r--src/lib/openjp2/j2k.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/lib/openjp2/j2k.c b/src/lib/openjp2/j2k.c
index 005698ab..d94c664f 100644
--- a/src/lib/openjp2/j2k.c
+++ b/src/lib/openjp2/j2k.c
@@ -4010,20 +4010,19 @@ OPJ_BOOL opj_j2k_read_sot ( opj_j2k_t *p_j2k,
if (l_num_parts != 0) { /* Number of tile-part header is provided by this tile-part header */
/* Useful to manage the case of textGBR.jp2 file because two values of TNSot are allowed: the correct numbers of
* tile-parts for that tile and zero (A.4.2 of 15444-1 : 2002). */
- if (l_tcp->m_nb_tile_parts) {
- if (l_current_part >= l_tcp->m_nb_tile_parts){
- opj_event_msg(p_manager, EVT_ERROR, "In SOT marker, TPSot (%d) is not valid regards to the current "
- "number of tile-part (%d), giving up\n", l_current_part, l_tcp->m_nb_tile_parts );
- p_j2k->m_specific_param.m_decoder.m_last_tile_part = 1;
- return OPJ_FALSE;
- }
+ if (l_num_parts < l_tcp->m_nb_tile_parts) {
+ l_num_parts = l_tcp->m_nb_tile_parts;
+ }
+ if (l_current_part >= l_num_parts) {
+ /* testcase 451.pdf.SIGSEGV.ce9.3723 */
+ l_num_parts = l_current_part + 1;
}
l_tcp->m_nb_tile_parts = l_num_parts;
}
/* If know the number of tile part header we will check if we didn't read the last*/
if (l_tcp->m_nb_tile_parts) {
- if (l_tcp->m_nb_tile_parts == (l_current_part + 1)) {
+ if (l_tcp->m_nb_tile_parts == l_current_part) {
p_j2k->m_specific_param.m_decoder.m_can_decode = 1; /* Process the last tile-part header*/
}
}