avcodec/h2645_parse: Ignore NAL with nuh_layer_id == 63

Comply with "For purposes other than determining the amount of data in the decoding units
of the bitstream, decoders shall ignore all data that follow the value 63 for nuh_layer_id in a NAL unit"
Rec. ITU-T H.265 v8 (08/2021)	Page 67

Fixes: index 63 out of bounds for type 'const int8_t[63]' (aka 'const signed char[63]')
Fixes: clusterfuzz-testcase-fuzzer_loadfile-5109286752026624
Reported-by: Kacper Michajlow <kasper93@gmail.com>
Found-by: ossfuzz
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
(cherry picked from commit 360e7cafd0)
Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
This commit is contained in:
Michael Niedermayer
2024-11-18 03:22:27 +01:00
parent 0bbd0c0eee
commit d2077aeb8e

View File

@@ -578,9 +578,11 @@ int ff_h2645_packet_split(H2645Packet *pkt, const uint8_t *buf, int length,
if (codec_id == AV_CODEC_ID_VVC) if (codec_id == AV_CODEC_ID_VVC)
ret = vvc_parse_nal_header(nal, logctx); ret = vvc_parse_nal_header(nal, logctx);
else if (codec_id == AV_CODEC_ID_HEVC) else if (codec_id == AV_CODEC_ID_HEVC) {
ret = hevc_parse_nal_header(nal, logctx); ret = hevc_parse_nal_header(nal, logctx);
else if (nal->nuh_layer_id == 63)
continue;
} else
ret = h264_parse_nal_header(nal, logctx); ret = h264_parse_nal_header(nal, logctx);
if (ret < 0) { if (ret < 0) {
av_log(logctx, AV_LOG_WARNING, "Invalid NAL unit %d, skipping.\n", av_log(logctx, AV_LOG_WARNING, "Invalid NAL unit %d, skipping.\n",