Add safety checks in RtpPacket::ZeroMutableExtensions and fuzz it
Bug: chromium:1042535 Change-Id: I0f7ef1086631b5beb2e0c89d57534d2551289117 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/166441 Reviewed-by: Niels Moller <nisse@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Commit-Queue: Ilya Nikolaevskiy <ilnik@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30303}
This commit is contained in:
committed by
Commit Bot
parent
5d9b964705
commit
db6ca7f2d7
@ -165,11 +165,13 @@ void RtpPacket::ZeroMutableExtensions() {
|
||||
break;
|
||||
}
|
||||
case RTPExtensionType::kRtpExtensionVideoTiming: {
|
||||
// Nullify 3 last entries: packetization delay and 2 network timestamps.
|
||||
// Each of them is 2 bytes.
|
||||
memset(
|
||||
WriteAt(extension.offset + VideoSendTiming::kPacerExitDeltaOffset),
|
||||
0, 6);
|
||||
// Nullify last entries, starting at pacer delay.
|
||||
// These are set by pacer and SFUs
|
||||
if (VideoSendTiming::kPacerExitDeltaOffset < extension.length) {
|
||||
memset(WriteAt(extension.offset +
|
||||
VideoSendTiming::kPacerExitDeltaOffset),
|
||||
0, extension.length - VideoSendTiming::kPacerExitDeltaOffset);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case RTPExtensionType::kRtpExtensionTransportSequenceNumber:
|
||||
|
||||
@ -156,5 +156,8 @@ void FuzzOneInput(const uint8_t* data, size_t size) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Check that zero-ing mutable extensions wouldn't cause any problems.
|
||||
packet.ZeroMutableExtensions();
|
||||
}
|
||||
} // namespace webrtc
|
||||
|
||||
Reference in New Issue
Block a user