Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 71a576b4 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "C2Fuzzer: fix memory leak in Codec2Fuzzer::decodeFrames" am: 91d63f16

Original change: https://android-review.googlesource.com/c/platform/frameworks/av/+/1782528

Change-Id: I0ac9df39a2b0802abe10453a068b0934c12d54ad
parents 43d2226f 91d63f16
Loading
Loading
Loading
Loading
+5 −6
Original line number Diff line number Diff line
@@ -239,17 +239,17 @@ void Codec2Fuzzer::deInitDecoder() {
}

void Codec2Fuzzer::decodeFrames(const uint8_t* data, size_t size) {
  mBufferSource = new BufferSource(data, size);
  if (!mBufferSource) {
  std::unique_ptr<BufferSource> bufferSource = std::make_unique<BufferSource>(data, size);
  if (!bufferSource) {
    return;
  }
  mBufferSource->parse();
  bufferSource->parse();
  c2_status_t status = C2_OK;
  size_t numFrames = 0;
  while (!mBufferSource->isEos()) {
  while (!bufferSource->isEos()) {
    uint8_t* frame = nullptr;
    size_t frameSize = 0;
    FrameData frameData = mBufferSource->getFrame();
    FrameData frameData = bufferSource->getFrame();
    frame = std::get<0>(frameData);
    frameSize = std::get<1>(frameData);

@@ -298,7 +298,6 @@ void Codec2Fuzzer::decodeFrames(const uint8_t* data, size_t size) {
  mConditionalVariable.wait_for(waitForDecodeComplete, kC2FuzzerTimeOut, [this] { return mEos; });
  std::list<std::unique_ptr<C2Work>> c2flushedWorks;
  mComponent->flush_sm(C2Component::FLUSH_COMPONENT, &c2flushedWorks);
  delete mBufferSource;
}

extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
+0 −1
Original line number Diff line number Diff line
@@ -104,7 +104,6 @@ class Codec2Fuzzer {
    static constexpr size_t kMarkerSuffixSize = 3;
  };

  BufferSource* mBufferSource;
  bool mEos = false;
  C2BlockPool::local_id_t mBlockPoolId;