Terminate decoding if sequence header is not found
BUG=b/74494554
Change-Id: I4b989945076964f7b74349bda61d32a3c89eca3f
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index e8683df..addd757 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -2633,6 +2633,11 @@
BufferPool *const pool = cm->buffer_pool;
RefCntBuffer *const frame_bufs = pool->frame_bufs;
+ if (!pbi->seqence_header_ready) {
+ aom_internal_error(&cm->error, AOM_CODEC_CORRUPT_FRAME,
+ "No sequence header");
+ }
+
cm->last_frame_type = cm->frame_type;
cm->last_intra_only = cm->intra_only;
diff --git a/av1/decoder/decoder.h b/av1/decoder/decoder.h
index e17e58d..7bce718 100644
--- a/av1/decoder/decoder.h
+++ b/av1/decoder/decoder.h
@@ -94,6 +94,7 @@
int tg_size; // Number of tiles in the current tilegroup
int tg_start; // First tile in the current tilegroup
int tg_size_bit_offset;
+ int seqence_header_ready;
#if CONFIG_INSPECTION
aom_inspect_cb inspect_cb;
void *inspect_ctx;
diff --git a/av1/decoder/obu.c b/av1/decoder/obu.c
index d801d92..c25b168 100644
--- a/av1/decoder/obu.c
+++ b/av1/decoder/obu.c
@@ -146,6 +146,8 @@
cm->film_grain_params_present = aom_rb_read_bit(rb);
#endif
+ pbi->seqence_header_ready = 1;
+
return ((rb->bit_offset - saved_bit_offset + 7) >> 3);
}