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:
Ilya Nikolaevskiy
2020-01-17 14:15:27 +01:00
committed by Commit Bot
parent 5d9b964705
commit db6ca7f2d7
2 changed files with 10 additions and 5 deletions

View File

@ -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:

View File

@ -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