Remove unused num_read_bytes

Change-Id: I6220ec6fd1d3e89e9ef2233df0219edcb954fc73
diff --git a/avifinfo.c b/avifinfo.c
index ba6f75d..88a6e11 100644
--- a/avifinfo.c
+++ b/avifinfo.c
@@ -94,7 +94,6 @@
   read_stream_t read;       // Used to fetch more bytes from the 'stream'.
   skip_stream_t skip;       // Used to advance the position in the 'stream'.
                             // Fallback to 'read' if 'skip' is null.
-  uint32_t num_read_bytes;  // Total number of read bytes.
 } AvifInfoInternalStream;
 
 // Reads 'num_bytes' from the 'stream'. They are available at '*data'.
@@ -103,7 +102,6 @@
     AvifInfoInternalStream* stream, uint32_t num_bytes, const uint8_t** data) {
   *data = stream->read(stream->stream, num_bytes);
   AVIFINFO_CHECK(*data != NULL, kTruncated);
-  stream->num_read_bytes += num_bytes;
   return kFound;
 }
 
@@ -122,7 +120,6 @@
       return AvifInfoInternalRead(stream, num_bytes, &unused);
     }
     stream->skip(stream->stream, num_bytes);
-    stream->num_read_bytes += num_bytes;
   }
   return kFound;
 }
@@ -270,8 +267,6 @@
     box->size = num_remaining_bytes;
   }
   AVIFINFO_CHECK(box->size >= box_header_size, kInvalid);
-  AVIFINFO_CHECK(box->size <= AVIFINFO_MAX_SIZE - stream->num_read_bytes,
-                 kAborted);
   AVIFINFO_CHECK(box->size <= num_remaining_bytes, kInvalid);
 
   const int has_fullbox_header =
@@ -706,7 +701,6 @@
   internal_stream.stream = stream;
   internal_stream.read = read;
   internal_stream.skip = skip;  // Fallbacks to 'read' if null.
-  internal_stream.num_read_bytes = 0;
   uint32_t num_parsed_boxes = 0;
   AvifInfoInternalFeatures internal_features;
   memset(&internal_features, AVIFINFO_UNDEFINED, sizeof(internal_features));
diff --git a/tests/avifinfo_test.cc b/tests/avifinfo_test.cc
index 108881d..0ab2ac7 100644
--- a/tests/avifinfo_test.cc
+++ b/tests/avifinfo_test.cc
@@ -29,6 +29,11 @@
                                                                      : Data();
 }
 
+bool AreEqual(const AvifInfoFeatures& a, const AvifInfoFeatures& b) {
+  return a.width == b.width && a.height == b.height &&
+         a.bit_depth == b.bit_depth && a.num_channels == b.num_channels;
+}
+
 //------------------------------------------------------------------------------
 // Positive tests
 
@@ -38,10 +43,7 @@
 
   AvifInfoFeatures features;
   EXPECT_EQ(AvifInfoGet(input.data(), input.size(), &features), kAvifInfoOk);
-  EXPECT_EQ(features.width, 1u);
-  EXPECT_EQ(features.height, 1u);
-  EXPECT_EQ(features.bit_depth, 8u);
-  EXPECT_EQ(features.num_channels, 3u);
+  EXPECT_TRUE(AreEqual(features, {1u, 1u, 8u, 3u}));
 }
 
 TEST(AvifInfoGetTest, NoPixi10b) {
@@ -54,10 +56,7 @@
 
   AvifInfoFeatures features;
   EXPECT_EQ(AvifInfoGet(input.data(), input.size(), &features), kAvifInfoOk);
-  EXPECT_EQ(features.width, 1u);
-  EXPECT_EQ(features.height, 1u);
-  EXPECT_EQ(features.bit_depth, 10u);
-  EXPECT_EQ(features.num_channels, 3u);
+  EXPECT_TRUE(AreEqual(features, {1u, 1u, 10u, 3u}));
 }
 
 TEST(AvifInfoGetTest, EnoughBytes) {
@@ -70,10 +69,21 @@
 
   AvifInfoFeatures features;
   EXPECT_EQ(AvifInfoGet(input.data(), input.size(), &features), kAvifInfoOk);
-  EXPECT_EQ(features.width, 1u);
-  EXPECT_EQ(features.height, 1u);
-  EXPECT_EQ(features.bit_depth, 8u);
-  EXPECT_EQ(features.num_channels, 3u);
+  EXPECT_TRUE(AreEqual(features, {1u, 1u, 8u, 3u}));
+}
+
+TEST(AvifInfoGetTest, BigMetaBox) {
+  Data input = LoadFile("avifinfo_test_1x1.avif");
+  ASSERT_FALSE(input.empty());
+  // Change "meta" box size to the size 2^32-1.
+  const uint8_t kMetaTag[] = {'m', 'e', 't', 'a'};
+  auto meta_tag =
+      std::search(input.begin(), input.end(), kMetaTag, kMetaTag + 4);
+  meta_tag[-4] = meta_tag[-3] = meta_tag[-2] = meta_tag[-1] = 255;
+
+  AvifInfoFeatures features;
+  EXPECT_EQ(AvifInfoGet(input.data(), input.size(), &features), kAvifInfoOk);
+  EXPECT_TRUE(AreEqual(features, {1u, 1u, 8u, 3u}));
 }
 
 TEST(AvifInfoGetTest, Null) {
@@ -89,10 +99,7 @@
 TEST(AvifInfoGetTest, Empty) {
   AvifInfoFeatures features;
   EXPECT_EQ(AvifInfoGet(nullptr, 0, &features), kAvifInfoNotEnoughData);
-  EXPECT_EQ(features.width, 0u);
-  EXPECT_EQ(features.height, 0u);
-  EXPECT_EQ(features.bit_depth, 0u);
-  EXPECT_EQ(features.num_channels, 0u);
+  EXPECT_TRUE(AreEqual(features, {0}));
 }
 
 TEST(AvifInfoGetTest, NotEnoughBytes) {
@@ -118,28 +125,24 @@
   AvifInfoFeatures features;
   EXPECT_EQ(AvifInfoGet(input.data(), input.size(), &features),
             kAvifInfoInvalidFile);
-  EXPECT_EQ(features.width, 0u);
-  EXPECT_EQ(features.height, 0u);
-  EXPECT_EQ(features.bit_depth, 0u);
-  EXPECT_EQ(features.num_channels, 0u);
+  EXPECT_TRUE(AreEqual(features, {0}));
 }
 
 TEST(AvifInfoGetTest, MetaBoxIsTooBig) {
   Data input = LoadFile("avifinfo_test_1x1.avif");
   ASSERT_FALSE(input.empty());
-  // Change "meta" box size to the maximum size 2^32-1.
+  // Change "meta" box size to the maximum size 2^64-1.
   const uint8_t kMetaTag[] = {'m', 'e', 't', 'a'};
   auto meta_tag =
       std::search(input.begin(), input.end(), kMetaTag, kMetaTag + 4);
-  meta_tag[-4] = meta_tag[-3] = meta_tag[-2] = meta_tag[-1] = 255;
+  meta_tag[-4] = meta_tag[-3] = meta_tag[-2] = 0;
+  meta_tag[-1] = 1;  // 32-bit "1" then 4-char "meta" then 64-bit size.
+  input.insert(meta_tag + 4, {255, 255, 255, 255, 255, 255, 255, 255});
 
   AvifInfoFeatures features;
   EXPECT_EQ(AvifInfoGet(input.data(), input.size(), &features),
             kAvifInfoTooComplex);
-  EXPECT_EQ(features.width, 0u);
-  EXPECT_EQ(features.height, 0u);
-  EXPECT_EQ(features.bit_depth, 0u);
-  EXPECT_EQ(features.num_channels, 0u);
+  EXPECT_TRUE(AreEqual(features, {0}));
 }
 
 TEST(AvifInfoGetTest, TooManyBoxes) {
@@ -164,10 +167,7 @@
   EXPECT_EQ(AvifInfoRead(/*stream=*/nullptr, /*read=*/nullptr, /*skip=*/nullptr,
                          &features),
             kAvifInfoNotEnoughData);
-  EXPECT_EQ(features.width, 0u);
-  EXPECT_EQ(features.height, 0u);
-  EXPECT_EQ(features.bit_depth, 0u);
-  EXPECT_EQ(features.num_channels, 0u);
+  EXPECT_TRUE(AreEqual(features, {0}));
 }
 
 //------------------------------------------------------------------------------