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 <lowkey@google.com>
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 <tguilbert@chromium.org>
Commit-Queue: Syed AbuTalib <lowkey@google.com>
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.