From 4888e2ff1fe2bfde301e50894c311d07431c4639 Mon Sep 17 00:00:00 2001
From: Xiang Li <xlxiangli@google.com>
Date: Sat, 25 Jun 2022 22:22:21 -0700
Subject: [PATCH] Fix a bug with y4m frame header reading (trigger assert when
 reaching file end)

---
 source/Lib/Utilities/VideoIOYuv.cpp | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/source/Lib/Utilities/VideoIOYuv.cpp b/source/Lib/Utilities/VideoIOYuv.cpp
index b5856e4bd9..0a6b5f7ed9 100644
--- a/source/Lib/Utilities/VideoIOYuv.cpp
+++ b/source/Lib/Utilities/VideoIOYuv.cpp
@@ -1064,9 +1064,13 @@ bool VideoIOYuv::read ( PelUnitBuf& pic, PelUnitBuf& picOrg, const InputColourSp
 
   if (m_inY4mFileHeaderLength)
   {
-    char y4mFrameHeader[Y4M_FRAME_HEADER_LENGTH];
-    m_cHandle.read(y4mFrameHeader, Y4M_FRAME_HEADER_LENGTH);
-    CHECK(strncmp(y4mFrameHeader, "FRAME", Y4M_FRAME_HEADER_LENGTH - 1), "Wrong Y4M frame header!");
+    char frameHeader[Y4M_FRAME_HEADER_LENGTH+1];
+    m_cHandle.read(frameHeader, Y4M_FRAME_HEADER_LENGTH);
+    if (m_cHandle.eof() || m_cHandle.fail())
+    {
+      return false;
+    }
+    CHECK(strncmp(frameHeader, y4mFrameHeader, Y4M_FRAME_HEADER_LENGTH), "Wrong Y4M frame header!");
   }
 
   const PelBuf areaBufY = picOrg.get(COMPONENT_Y);
-- 
GitLab