ca9047
diff --git a/src/mux/muxread.c b/src/mux/muxread.c
ca9047
index 0b55286..eb5070b 100644
ca9047
--- a/src/mux/muxread.c
ca9047
+++ b/src/mux/muxread.c
ca9047
ca9047
@@ -187,7 +187,7 @@
ca9047
   size = bitstream->size;
ca9047
 
ca9047
   if (data == NULL) return NULL;
ca9047
-  if (size < RIFF_HEADER_SIZE) return NULL;
ca9047
+  if (size < RIFF_HEADER_SIZE + CHUNK_HEADER_SIZE) return NULL;
ca9047
   if (GetLE32(data + 0) != MKFOURCC('R', 'I', 'F', 'F') ||
ca9047
       GetLE32(data + CHUNK_HEADER_SIZE) != MKFOURCC('W', 'E', 'B', 'P')) {
ca9047
     return NULL;
ca9047
@@ -196,8 +196,6 @@
ca9047
   mux = WebPMuxNew();
ca9047
   if (mux == NULL) return NULL;
ca9047
 
ca9047
-  if (size < RIFF_HEADER_SIZE + TAG_SIZE) goto Err;
ca9047
-
ca9047
   tag = GetLE32(data + RIFF_HEADER_SIZE);
ca9047
   if (tag != kChunks[IDX_VP8].tag &&
ca9047
       tag != kChunks[IDX_VP8L].tag &&
ca9047
@@ -206,12 +204,11 @@
ca9047
   }
ca9047
 
ca9047
   riff_size = SizeWithPadding(GetLE32(data + TAG_SIZE));
ca9047
-  if (riff_size > MAX_CHUNK_PAYLOAD || riff_size > size) {
ca9047
-    goto Err;
ca9047
-  } else {
ca9047
-    if (riff_size < size) {  // Redundant data after last chunk.
ca9047
-      size = riff_size;  // To make sure we don't read any data beyond mux_size.
ca9047
-    }
ca9047
+  if (riff_size < CHUNK_HEADER_SIZE) goto Err;
ca9047
+  if (riff_size > MAX_CHUNK_PAYLOAD || riff_size > size) goto Err;
ca9047
+  // There's no point in reading past the end of the RIFF chunk.
ca9047
+  if (size > riff_size + CHUNK_HEADER_SIZE) {
ca9047
+    size = riff_size + CHUNK_HEADER_SIZE;
ca9047
   }
ca9047
 
ca9047
   end = data + size;
ca9047