CVE-2026-113120
Overview
Changed Functions
| Function | Change | Notes |
|---|---|---|
switchmedia/formats/mp4/box_definitions.cc |
modified |
Files Changed
media/formats/mp4/box_definitions.hmedia/formats/mp4/box_definitions.ccmedia/formats/mp4/mp4_stream_parser.cc
Patch
From a7fd98442d3af98c25453f4b4a5df897b3666c76 Mon Sep 17 00:00:00 2001 From: Syed AbuTalib <[email protected]> Date: Fri, 25 Sep 2026 12:38:09 -0700 Subject: [PATCH] Use AudioCodecProfile for IamfSpecificBox.profile Harden profile against invalid values such as negatives. As according to the spec section 4 ("Profiles"), the profile MUST have one of the values of [0,1]. Bug: 560476932 Change-Id: I05ec375fb78171d11072e132344786c8499c5a2e Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8455582 Reviewed-by: Thomas Guilbert <[email protected]> Commit-Queue: Syed AbuTalib <[email protected]> Cr-Commit-Position: refs/heads/main@{#1705062} --- diff --git a/media/formats/mp4/box_definitions.cc b/media/formats/mp4/box_definitions.cc index 88299b6..bc691a4c 100644 --- a/media/formats/mp4/box_definitions.cc +++ b/media/formats/mp4/box_definitions.cc @@ -1790,6 +1790,7 @@ RCHECK(ReadOBU(&config_reader)); } + RCHECK(profile != AudioCodecProfile::kUnknown); return true; } @@ -1804,15 +1805,27 @@ case kIamfConfigObuTypeAudioElement: case kIamfConfigObuTypeMixPresentation: break; - case kIamfConfigObuTypeSequenceHeader: + case kIamfConfigObuTypeSequenceHeader: { uint32_t ia_code; RCHECK(reader->Read4(&ia_code)); RCHECK(ia_code == FOURCC_IAMF); - RCHECK(reader->Read1(&profile)); - RCHECK(profile <= 1); - + uint8_t primary_profile; + RCHECK(reader->Read1(&primary_profile)); + switch (primary_profile) { + case 0: + profile = AudioCodecProfile::kIAMF_SIMPLE; + break; + case 1: + profile = AudioCodecProfile::kIAMF_BASE; + break; + default: + DVLOG(1) << "Unhandled IAMF primary_profile " + << static_cast<int>(primary_profile); + return false; + } break; + } default: DVLOG(1) << "Unhandled IAMF OBU type " << static_cast<int>(obu_type); return false; diff --git a/media/formats/mp4/box_definitions.h b/media/formats/mp4/box_definitions.h index ed40f014..08cf9684e 100644 --- a/media/formats/mp4/box_definitions.h +++ b/media/formats/mp4/box_definitions.h @@ -15,6 +15,7 @@ #include "base/compiler_specific.h" #include "base/time/time.h" +#include "media/base/audio_codecs.h" #include "media/base/decrypt_config.h" #include "media/base/media_export.h" #include "media/base/media_log.h" @@ -488,7 +489,7 @@ uint32_t* obu_size); bool ReadLeb128Value(BufferReader* reader, uint32_t* value) const; - uint8_t profile; + AudioCodecProfile profile = AudioCodecProfile::kUnknown; bool redundant_copy = false; std::vector<uint8_t> ia_descriptors; diff --git a/media/formats/mp4/mp4_stream_parser.cc b/media/formats/mp4/mp4_stream_parser.cc index 8080b076..111d8560 100644 --- a/media/formats/mp4/mp4_stream_parser.cc +++ b/media/formats/mp4/mp4_stream_parser.cc @@ -568,8 +568,7 @@ } codec = AudioCodec::kIAMF; - profile = entry.iacb.profile == 0 ? AudioCodecProfile::kIAMF_SIMPLE - : AudioCodecProfile::kIAMF_BASE; + profile = entry.iacb.profile; extra_data = entry.iacb.ia_descriptors; // The correct values for the channel layout and sample rate can
Original Bug Report
mediasource_MP4_IAMF_OPUS_pipeline_integration_fuzzer: Use-of-uninitialized-value in media::internal::MediaSerializer<media::AudioDecoderConfig>::Serialize
Detailed Report: https://clusterfuzz.com/testcase?key=4860616997109760
Fuzzing Engine: libFuzzer Fuzz Target: mediasource_MP4_IAMF_OPUS_pipeline_integration_fuzzer Job Type: libfuzzer_chrome_msan_schemav1 Platform Id: linux
Crash Type: Use-of-uninitialized-value Crash Address: Crash State: media::internal::MediaSerializermedia::AudioDecoderConfig::Serialize media::internal::MediaSerializer<std::__Cr::vector<media::AudioDecoderConfig, st std::__Cr::unique_ptr<media::MediaLogRecord, std::__Cr::default_delete<media::Me
Sanitizer: memory (MSAN)
Recommended Security Severity: Medium
Crash Revision: https://clusterfuzz.com/revisions?job=libfuzzer_chrome_msan_schemav1&revision=1695552
Reproducer Testcase: https://clusterfuzz.com/download?testcase_id=4860616997109760
Issue filed automatically.
See https://www.chromium.org/developers/testing/memorysanitizer#TOC-Reproducing-ClusterFuzz-Bugs for instructions on reproducing this bug locally.