obudec_read_temporal_unit: fix buffered read w/annexb

this fixes an overwrite when the TU size is smaller than the amount of
buffered data; previously the larger value would be used, now the
minimum of the two will store the correct amount

Bug: b/144018360
Change-Id: Ia97ba90ee274f2932d4b98bab43d5944932355b2
diff --git a/common/obudec.c b/common/obudec.c
index 1ce218d..650f997 100644
--- a/common/obudec.c
+++ b/common/obudec.c
@@ -467,10 +467,11 @@
         memcpy(*buffer, &tuheader[0], length_of_temporal_unit_size);
         offset = length_of_temporal_unit_size;
       } else {
-        memcpy(*buffer, obu_ctx->buffer, obu_ctx->bytes_buffered);
-        offset = obu_ctx->bytes_buffered;
-        data_size = tu_size - obu_ctx->bytes_buffered;
-        obu_ctx->bytes_buffered = 0;
+        const size_t copy_size = AOMMIN(obu_ctx->bytes_buffered, tu_size);
+        memcpy(*buffer, obu_ctx->buffer, copy_size);
+        offset = copy_size;
+        data_size = tu_size - copy_size;
+        obu_ctx->bytes_buffered -= copy_size;
       }
 
       if (fread(*buffer + offset, 1, data_size, f) != data_size) {