In ParseNonParameterSetNalu check BitstreamReader::Ok before returning early
~BitstreamReader() DCHECKs that the last read has been verified, so all paths where we may leave the slice_reader instance's scope early must be guarded by an Ok(). Bug: None Change-Id: Ic67f87c04d1f042392c1dd6a066fdccf26e19003 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/369540 Reviewed-by: Sergey Silkin <ssilkin@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Reviewed-by: Tomas Gunnarsson <tommi@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#43463}
This commit is contained in:
parent
4060745995
commit
4a6a7465d0
@ -118,13 +118,15 @@ H264BitstreamParser::Result H264BitstreamParser::ParseNonParameterSetNalu(
|
|||||||
if (slice_reader.Read<bool>()) {
|
if (slice_reader.Read<bool>()) {
|
||||||
// num_ref_idx_l0_active_minus1: ue(v)
|
// num_ref_idx_l0_active_minus1: ue(v)
|
||||||
num_ref_idx_l0_active_minus1 = slice_reader.ReadExponentialGolomb();
|
num_ref_idx_l0_active_minus1 = slice_reader.ReadExponentialGolomb();
|
||||||
if (num_ref_idx_l0_active_minus1 > H264::kMaxReferenceIndex) {
|
if (!slice_reader.Ok() ||
|
||||||
|
num_ref_idx_l0_active_minus1 > H264::kMaxReferenceIndex) {
|
||||||
return kInvalidStream;
|
return kInvalidStream;
|
||||||
}
|
}
|
||||||
if (slice_type == H264::SliceType::kB) {
|
if (slice_type == H264::SliceType::kB) {
|
||||||
// num_ref_idx_l1_active_minus1: ue(v)
|
// num_ref_idx_l1_active_minus1: ue(v)
|
||||||
num_ref_idx_l1_active_minus1 = slice_reader.ReadExponentialGolomb();
|
num_ref_idx_l1_active_minus1 = slice_reader.ReadExponentialGolomb();
|
||||||
if (num_ref_idx_l1_active_minus1 > H264::kMaxReferenceIndex) {
|
if (!slice_reader.Ok() ||
|
||||||
|
num_ref_idx_l1_active_minus1 > H264::kMaxReferenceIndex) {
|
||||||
return kInvalidStream;
|
return kInvalidStream;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user