summaryrefslogtreecommitdiff
path: root/chromium/media/formats/mp4/avc.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/formats/mp4/avc.cc')
-rw-r--r--chromium/media/formats/mp4/avc.cc12
1 files changed, 6 insertions, 6 deletions
diff --git a/chromium/media/formats/mp4/avc.cc b/chromium/media/formats/mp4/avc.cc
index 509335b07e9..6512ad65394 100644
--- a/chromium/media/formats/mp4/avc.cc
+++ b/chromium/media/formats/mp4/avc.cc
@@ -21,9 +21,9 @@ static const uint8_t kAnnexBStartCode[] = {0, 0, 0, 1};
static const int kAnnexBStartCodeSize = 4;
static bool ConvertAVCToAnnexBInPlaceForLengthSize4(std::vector<uint8_t>* buf) {
- const int kLengthSize = 4;
+ const size_t kLengthSize = 4;
size_t pos = 0;
- while (pos + kLengthSize < buf->size()) {
+ while (buf->size() > kLengthSize && buf->size() - kLengthSize > pos) {
uint32_t nal_length = (*buf)[pos];
nal_length = (nal_length << 8) + (*buf)[pos+1];
nal_length = (nal_length << 8) + (*buf)[pos+2];
@@ -61,7 +61,7 @@ int AVC::FindSubsampleIndex(const std::vector<uint8_t>& buffer,
}
// static
-bool AVC::ConvertFrameToAnnexB(int length_size,
+bool AVC::ConvertFrameToAnnexB(size_t length_size,
std::vector<uint8_t>* buffer,
std::vector<SubsampleEntry>* subsamples) {
RCHECK(length_size == 1 || length_size == 2 || length_size == 4);
@@ -77,8 +77,8 @@ bool AVC::ConvertFrameToAnnexB(int length_size,
buffer->reserve(temp.size() + 32);
size_t pos = 0;
- while (pos + length_size < temp.size()) {
- int nal_length = temp[pos];
+ while (temp.size() > length_size && temp.size() - length_size > pos) {
+ size_t nal_length = temp[pos];
if (length_size == 2) nal_length = (nal_length << 8) + temp[pos+1];
pos += length_size;
@@ -87,7 +87,7 @@ bool AVC::ConvertFrameToAnnexB(int length_size,
return false;
}
- RCHECK(pos + nal_length <= temp.size());
+ RCHECK(temp.size() >= nal_length && temp.size() - nal_length >= pos);
buffer->insert(buffer->end(), kAnnexBStartCode,
kAnnexBStartCode + kAnnexBStartCodeSize);
if (subsamples && !subsamples->empty()) {