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

Commit fe1dcf5c authored by jiabin's avatar jiabin Committed by Jiabin Huang
Browse files

Add fuzzer for audio attributes tags.

Bug: 378321639
Test: libaaudio_fuzzer
Flag: TEST_ONLY
Change-Id: Ief3197a795b4cbf0b693c8736ba0b520ef71e464
parent 90f8ab67
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@

#include "aaudio/AAudio.h"
#include "aaudio/AAudioTesting.h"
#include "system/aaudio/AAudio.h"
#include <fuzzer/FuzzedDataProvider.h>

#include <functional>
@@ -183,6 +184,12 @@ void LibAaudioFuzzer::invokeAAudioSetAPIs(FuzzedDataProvider &fdp){
          fdp.PickValueInArray({AAUDIO_UNSPECIFIED, fdp.ConsumeIntegral<int32_t>()});
  AAudioStreamBuilder_setFramesPerDataCallback(mAaudioBuilder, framesPerDataCallback);

  const size_t tagsNumBytes = fdp.ConsumeIntegralInRange<size_t>(
          0, AAUDIO_ATTRIBUTES_TAGS_MAX_SIZE + 10);
  AAudioStreamBuilder_setTags(mAaudioBuilder,
                              (tagsNumBytes == 0 ? nullptr
                                                 : fdp.ConsumeBytesAsString(tagsNumBytes).c_str()));

  aaudio_policy_t policy =
          fdp.PickValueInArray({fdp.PickValueInArray(kPolicies), fdp.ConsumeIntegral<int32_t>()});
  AAudio_setMMapPolicy(policy);
@@ -193,6 +200,7 @@ void LibAaudioFuzzer::process(const uint8_t *data, size_t size) {
  int32_t maxFrames = 0;
  int32_t count = 0;
  aaudio_stream_state_t state = AAUDIO_STREAM_STATE_UNKNOWN;
  char tags[AAUDIO_ATTRIBUTES_TAGS_MAX_SIZE + 1];

  invokeAAudioSetAPIs(fdp);

@@ -311,6 +319,9 @@ void LibAaudioFuzzer::process(const uint8_t *data, size_t size) {
            [&]() {
                (void)AAudioStream_getBufferSizeInFrames(mAaudioStream);
            },
            [&]() {
                (void)AAudioStream_getTags(mAaudioStream, tags);
            },
            [&]() {
                (void)AAudioStream_isMMapUsed(mAaudioStream);
            },