| Index: webrtc/test/fuzzers/rtp_header_fuzzer.cc
|
| diff --git a/webrtc/test/fuzzers/rtp_header_fuzzer.cc b/webrtc/test/fuzzers/rtp_header_fuzzer.cc
|
| index 914a8fb9494bc2e701d658ec5c1e55414b6a0586..9e111a80f249337e2d0f93ceb72641031b663310 100644
|
| --- a/webrtc/test/fuzzers/rtp_header_fuzzer.cc
|
| +++ b/webrtc/test/fuzzers/rtp_header_fuzzer.cc
|
| @@ -15,30 +15,31 @@
|
| #include "webrtc/modules/rtp_rtcp/source/rtp_utility.h"
|
|
|
| namespace webrtc {
|
| -// We decide which header extensions to register by reading one byte
|
| +// We decide which header extensions to register by reading two bytes
|
| // from the beginning of |data| and interpreting it as a bitmask over
|
| -// the RTPExtensionType enum. This assert ensures one byte is enough.
|
| -static_assert(kRtpExtensionNumberOfExtensions <= 8,
|
| +// the RTPExtensionType enum. This assert ensures two bytes are enough.
|
| +static_assert(kRtpExtensionNumberOfExtensions <= 16,
|
| "Insufficient bits read to configure all header extensions. Add "
|
| "an extra byte and update the switches.");
|
|
|
| void FuzzOneInput(const uint8_t* data, size_t size) {
|
| - if (size <= 1)
|
| + if (size <= 2)
|
| return;
|
|
|
| // Don't use the configuration byte as part of the packet.
|
| - std::bitset<8> extensionMask(data[0]);
|
| - data++;
|
| - size--;
|
| + std::bitset<16> extensionMask(*reinterpret_cast<const uint16_t*>(data));
|
| + data += 2;
|
| + size -= 2;
|
|
|
| RtpPacketReceived::ExtensionManager extensions;
|
| + // Skip i = 0 since it maps to ExtensionNone and extension id = 0 is invalid.
|
| for (int i = 0; i < kRtpExtensionNumberOfExtensions; i++) {
|
| RTPExtensionType extension_type = static_cast<RTPExtensionType>(i);
|
| if (extensionMask[i] && extension_type != kRtpExtensionNone) {
|
| // Extensions are registered with an ID, which you signal to the
|
| // peer so they know what to expect. This code only cares about
|
| // parsing so the value of the ID isn't relevant; we use i.
|
| - extensions.Register(extension_type, i);
|
| + extensions.RegisterByType(i, extension_type);
|
| }
|
| }
|
|
|
|
|