From 32134470cacefecc27d59a0086aed71f9663404b Mon Sep 17 00:00:00 2001 From: philipel Date: Tue, 10 Jul 2018 11:31:29 +0200 Subject: [PATCH] Actually input packets into the PacketBuffer. Also prepared it for comming changes to RTPVideoHeader. Bug: none Change-Id: I60e57f779aee4ee98b6eec3d6631e43ac682c37f Reviewed-on: https://webrtc-review.googlesource.com/87825 Reviewed-by: Alex Loiko Commit-Queue: Philip Eliasson Cr-Commit-Position: refs/heads/master@{#23911} --- test/fuzzers/packet_buffer_fuzzer.cc | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/test/fuzzers/packet_buffer_fuzzer.cc b/test/fuzzers/packet_buffer_fuzzer.cc index 7b52ee0fc3..b500f92b40 100644 --- a/test/fuzzers/packet_buffer_fuzzer.cc +++ b/test/fuzzers/packet_buffer_fuzzer.cc @@ -27,8 +27,26 @@ void FuzzOneInput(const uint8_t* data, size_t size) { video_coding::PacketBuffer::Create(&clock, 8, 1024, &callback)); test::FuzzDataHelper helper(rtc::ArrayView(data, size)); - while (helper.BytesLeft()) + while (helper.BytesLeft()) { + // The RTPVideoHeader is a complex type, so overwriting it with random data + // will put it in an invalid state. Therefore we save/restore it. + uint8_t video_header_backup[sizeof(packet.video_header)]; + memcpy(&video_header_backup, &packet.video_header, + sizeof(packet.video_header)); + helper.CopyTo(&packet); + + memcpy(&packet.video_header, &video_header_backup, + sizeof(packet.video_header)); + + // The packet buffer owns the payload of the packet. + uint8_t payload_size; + helper.CopyTo(&payload_size); + packet.sizeBytes = payload_size; + packet.dataPtr = new uint8_t[payload_size]; + + packet_buffer->InsertPacket(&packet); + } } } // namespace webrtc