Revert "RTPFragmentationHeader::VerifyAndAllocateFragmentationHeader: Verify that size fits in 16 bits" https://webrtc-codereview.appspot.com/47229004/

Reason for revert: Breaks Chromium FYI compilation

This reverts commit 10022cdeae785187e1d4329042b4ed294c393a16.

BUG=484432
TBR=tommi

Review URL: https://webrtc-codereview.appspot.com/54499004

Cr-Commit-Position: refs/heads/master@{#9247}
This commit is contained in:
Magnus Jedvert
2015-05-21 13:25:24 +02:00
parent 10022cdeae
commit 848d524879

View File

@ -15,9 +15,7 @@
#include <string.h> // memcpy #include <string.h> // memcpy
#include <algorithm> #include <algorithm>
#include <limits>
#include "webrtc/base/checks.h"
#include "webrtc/base/constructormagic.h" #include "webrtc/base/constructormagic.h"
#include "webrtc/common_types.h" #include "webrtc/common_types.h"
#include "webrtc/common_video/rotation.h" #include "webrtc/common_video/rotation.h"
@ -195,17 +193,15 @@ class RTPFragmentationHeader {
} }
} }
void VerifyAndAllocateFragmentationHeader(const size_t size) { void VerifyAndAllocateFragmentationHeader(const uint16_t size) {
CHECK(size <= std::numeric_limits<uint16_t>::max()); if (fragmentationVectorSize < size) {
const uint16_t size16 = static_cast<uint16_t>(size);
if (fragmentationVectorSize < size16) {
uint16_t oldVectorSize = fragmentationVectorSize; uint16_t oldVectorSize = fragmentationVectorSize;
{ {
// offset // offset
size_t* oldOffsets = fragmentationOffset; size_t* oldOffsets = fragmentationOffset;
fragmentationOffset = new size_t[size16]; fragmentationOffset = new size_t[size];
memset(fragmentationOffset + oldVectorSize, 0, memset(fragmentationOffset + oldVectorSize, 0,
sizeof(size_t) * (size16 - oldVectorSize)); sizeof(size_t) * (size - oldVectorSize));
// copy old values // copy old values
memcpy(fragmentationOffset, oldOffsets, memcpy(fragmentationOffset, oldOffsets,
sizeof(size_t) * oldVectorSize); sizeof(size_t) * oldVectorSize);
@ -214,9 +210,9 @@ class RTPFragmentationHeader {
// length // length
{ {
size_t* oldLengths = fragmentationLength; size_t* oldLengths = fragmentationLength;
fragmentationLength = new size_t[size16]; fragmentationLength = new size_t[size];
memset(fragmentationLength + oldVectorSize, 0, memset(fragmentationLength + oldVectorSize, 0,
sizeof(size_t) * (size16 - oldVectorSize)); sizeof(size_t) * (size - oldVectorSize));
memcpy(fragmentationLength, oldLengths, memcpy(fragmentationLength, oldLengths,
sizeof(size_t) * oldVectorSize); sizeof(size_t) * oldVectorSize);
delete[] oldLengths; delete[] oldLengths;
@ -224,9 +220,9 @@ class RTPFragmentationHeader {
// time diff // time diff
{ {
uint16_t* oldTimeDiffs = fragmentationTimeDiff; uint16_t* oldTimeDiffs = fragmentationTimeDiff;
fragmentationTimeDiff = new uint16_t[size16]; fragmentationTimeDiff = new uint16_t[size];
memset(fragmentationTimeDiff + oldVectorSize, 0, memset(fragmentationTimeDiff + oldVectorSize, 0,
sizeof(uint16_t) * (size16 - oldVectorSize)); sizeof(uint16_t) * (size - oldVectorSize));
memcpy(fragmentationTimeDiff, oldTimeDiffs, memcpy(fragmentationTimeDiff, oldTimeDiffs,
sizeof(uint16_t) * oldVectorSize); sizeof(uint16_t) * oldVectorSize);
delete[] oldTimeDiffs; delete[] oldTimeDiffs;
@ -234,14 +230,14 @@ class RTPFragmentationHeader {
// payload type // payload type
{ {
uint8_t* oldTimePlTypes = fragmentationPlType; uint8_t* oldTimePlTypes = fragmentationPlType;
fragmentationPlType = new uint8_t[size16]; fragmentationPlType = new uint8_t[size];
memset(fragmentationPlType + oldVectorSize, 0, memset(fragmentationPlType + oldVectorSize, 0,
sizeof(uint8_t) * (size16 - oldVectorSize)); sizeof(uint8_t) * (size - oldVectorSize));
memcpy(fragmentationPlType, oldTimePlTypes, memcpy(fragmentationPlType, oldTimePlTypes,
sizeof(uint8_t) * oldVectorSize); sizeof(uint8_t) * oldVectorSize);
delete[] oldTimePlTypes; delete[] oldTimePlTypes;
} }
fragmentationVectorSize = size16; fragmentationVectorSize = size;
} }
} }