[FFmpeg-devel] [PATCH] avcodec/mpc8: init avctx->sample_rate (PR #20144)

Kacper Michajłow code at ffmpeg.org
Wed Aug 6 20:50:39 EEST 2025


PR #20144 opened by Kacper Michajłow (kasper93)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20144
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20144.patch

Fixes frame validation.

Fixes: OSS-Fuzz/416134551



From b3f94d3da8a60fde592bd76bc61ba394c1f18aef Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= <kasper93 at gmail.com>
Date: Wed, 6 Aug 2025 19:49:11 +0200
Subject: [PATCH] avcodec/mpc8: init avctx->sample_rate
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Fixes frame validation.

Fixes: OSS-Fuzz/416134551
Signed-off-by: Kacper Michajłow <kasper93 at gmail.com>
---
 libavcodec/mpc8.c | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/libavcodec/mpc8.c b/libavcodec/mpc8.c
index c72b2e3686..a9545fce1b 100644
--- a/libavcodec/mpc8.c
+++ b/libavcodec/mpc8.c
@@ -155,7 +155,20 @@ static av_cold int mpc8_decode_init(AVCodecContext * avctx)
 
     init_get_bits(&gb, avctx->extradata, 16);
 
-    skip_bits(&gb, 3);//sample rate
+    uint8_t sample_rate = get_bits(&gb, 3);
+    switch (sample_rate) {
+    case 0:
+        avctx->sample_rate = 44100;
+    case 1:
+        avctx->sample_rate = 48000;
+    case 2:
+        avctx->sample_rate = 37800;
+    case 3:
+        avctx->sample_rate = 32000;
+    default:
+        av_log(avctx, AV_LOG_ERROR, "invalid sample rate (%u)\n", sample_rate);
+        return AVERROR_INVALIDDATA;
+    }
     c->maxbands = get_bits(&gb, 5) + 1;
     if (c->maxbands >= BANDS) {
         av_log(avctx,AV_LOG_ERROR, "maxbands %d too high\n", c->maxbands);
-- 
2.49.1



More information about the ffmpeg-devel mailing list