avformat/asfdec_f: Check amount of value read
authorMichael Niedermayer <michael@niedermayer.cc>
Tue, 22 Jul 2025 23:57:54 +0000 (01:57 +0200)
committerMichael Niedermayer <michael@niedermayer.cc>
Mon, 4 Aug 2025 14:36:14 +0000 (16:36 +0200)
Fixes: use of uninitialized memory
Fixes: 403675492/clusterfuzz-testcase-minimized-ffmpeg_dem_ASF_fuzzer-4754281823797248

Found-by: continuous fuzzing process https://github.com/google/oss-fuzz/tree/master/projects/ffmpeg
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit fa197924a66d83106c5d4dadb8610a1c526afd67)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
libavformat/asfdec_f.c

index dd9b34e035da7561bc0c2e59d45700bb6dda2adf..3b777ea21d0baab1c2a57e1244ad0c0c77073051 100644 (file)
@@ -239,8 +239,10 @@ static void get_tag(AVFormatContext *s, const char *key, int type, int len, int
     case ASF_UNICODE:
         avio_get_str16le(s->pb, len, value, 2 * len + 1);
         break;
-    case -1: // ASCI
-        avio_read(s->pb, value, len);
+    case -1:; // ASCII
+        int ret = ffio_read_size(s->pb, value, len);
+        if (ret < 0)
+            goto finish;
         value[len]=0;
         break;
     case ASF_BYTE_ARRAY: