diff --git a/libavformat/aadec.c b/libavformat/aadec.c
index df0310c5ac..ed5fed063c 100644
--- a/libavformat/aadec.c
+++ b/libavformat/aadec.c
@@ -223,7 +223,8 @@ static int aa_read_header(AVFormatContext *s)
     while ((chapter_pos = avio_tell(pb)) >= 0 && chapter_pos < c->content_end) {
         int chapter_idx = s->nb_chapters;
         uint32_t chapter_size = avio_rb32(pb);
-        if (chapter_size == 0) break;
+        if (chapter_size == 0 || avio_feof(pb))
+            break;
         chapter_pos -= start + CHAPTER_HEADER_SIZE * chapter_idx;
         avio_skip(pb, 4 + chapter_size);
         if (!avpriv_new_chapter(s, chapter_idx, st->time_base,