Merge "Codec2Fuzzer: Updated BufferSource parsing logic" am: 4d37cd9863 am: ac1da1c6ac am: 5061e1bb62
Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1563172
MUST ONLY BE SUBMITTED BY AUTOMERGER
Change-Id: I19ed3c418de28f45736281b3182896d96c58f0d0
diff --git a/media/codec2/fuzzer/C2Fuzzer.cpp b/media/codec2/fuzzer/C2Fuzzer.cpp
index 71956a2..51e1013 100644
--- a/media/codec2/fuzzer/C2Fuzzer.cpp
+++ b/media/codec2/fuzzer/C2Fuzzer.cpp
@@ -148,9 +148,8 @@
std::vector<std::tuple<C2String, C2ComponentFactory::CreateCodec2FactoryFunc,
C2ComponentFactory::DestroyCodec2FactoryFunc>> codec2FactoryFunc;
- codec2FactoryFunc.emplace_back(std::make_tuple(C2COMPONENTNAME,
- &CreateCodec2Factory,
- &DestroyCodec2Factory));
+ codec2FactoryFunc.emplace_back(
+ std::make_tuple(C2COMPONENTNAME, &CreateCodec2Factory, &DestroyCodec2Factory));
std::shared_ptr<C2ComponentStore> componentStore = GetTestComponentStore(codec2FactoryFunc);
if (!componentStore) {
diff --git a/media/codec2/fuzzer/C2Fuzzer.h b/media/codec2/fuzzer/C2Fuzzer.h
index 2efad50..d5ac81a 100644
--- a/media/codec2/fuzzer/C2Fuzzer.h
+++ b/media/codec2/fuzzer/C2Fuzzer.h
@@ -59,8 +59,9 @@
private:
class BufferSource {
public:
- BufferSource(const uint8_t* data, size_t size)
- : mData(data), mSize(size), mReadIndex(size - kMarkerSize) {}
+ BufferSource(const uint8_t* data, size_t size) : mData(data), mSize(size) {
+ mReadIndex = (size <= kMarkerSize) ? 0 : (size - kMarkerSize);
+ }
~BufferSource() {
mData = nullptr;
mSize = 0;
@@ -72,10 +73,20 @@
FrameData getFrame();
private:
- bool isMarker() { return (memcmp(&mData[mReadIndex], kMarker, kMarkerSize) == 0); }
+ bool isMarker() {
+ if ((kMarkerSize < mSize) && (mReadIndex < mSize - kMarkerSize)) {
+ return (memcmp(&mData[mReadIndex], kMarker, kMarkerSize) == 0);
+ } else {
+ return false;
+ }
+ }
bool isCSDMarker(size_t position) {
- return (memcmp(&mData[position], kCsdMarkerSuffix, kMarkerSuffixSize) == 0);
+ if ((kMarkerSuffixSize < mSize) && (position < mSize - kMarkerSuffixSize)) {
+ return (memcmp(&mData[position], kCsdMarkerSuffix, kMarkerSuffixSize) == 0);
+ } else {
+ return false;
+ }
}
bool searchForMarker();