[trunk] checks for JP2 signature and file type boxes more carefully
authorAntonin Descampe <antonin@gmail.com>
Tue, 20 Jan 2015 14:27:20 +0000 (14:27 +0000)
committerAntonin Descampe <antonin@gmail.com>
Tue, 20 Jan 2015 14:27:20 +0000 (14:27 +0000)
Update issue 430

src/lib/openjp2/jp2.c

index 6d7a24e19e5f569fd9799b44a808f3955ecfa437..aafbe199d6f55d36a39d7e3d352470310bbf1dd6 100644 (file)
@@ -2066,6 +2066,16 @@ OPJ_BOOL opj_jp2_read_header_procedure(  opj_jp2_t *jp2,
                        }
                }
                else {
+            if (!(jp2->jp2_state & JP2_STATE_SIGNATURE)) {
+                opj_event_msg(p_manager, EVT_ERROR, "Malformed JP2 file format: first box must be JPEG 2000 signature box\n");
+                opj_free(l_current_data);
+                return OPJ_FALSE;
+            }
+            if (!(jp2->jp2_state & JP2_STATE_FILE_TYPE)) {
+                opj_event_msg(p_manager, EVT_ERROR, "Malformed JP2 file format: second box must be file type box\n");
+                opj_free(l_current_data);
+                return OPJ_FALSE;
+            }
                        jp2->jp2_state |= JP2_STATE_UNKNOWN;
                        if (opj_stream_skip(stream,l_current_data_size,p_manager) != l_current_data_size) {
                                opj_event_msg(p_manager, EVT_ERROR, "Problem with skipping JPEG2000 box, stream error\n");