diff --git a/vp9/vp9_dx_iface.c b/vp9/vp9_dx_iface.c
index 8b5226f9f9d709ac46e5817474dcf028670da111..6198250203636786467ede8970ee1be1c77fc129 100644
--- a/vp9/vp9_dx_iface.c
+++ b/vp9/vp9_dx_iface.c
@@ -413,7 +413,8 @@ static vpx_codec_err_t decoder_decode(vpx_codec_alg_priv_t *ctx,
 
     for (i = 0; i < frame_count; ++i) {
       const uint32_t frame_size = frame_sizes[i];
-      if (data_start < data || data_start + frame_size >= data_end) {
+      if (data_start < data ||
+          frame_size > (uint32_t)(data_end - data_start)) {
         ctx->base.err_detail = "Invalid frame size in index";
         return VPX_CODEC_CORRUPT_FRAME;
       }