brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 2cef1c4 Raw
53 lines · cpp
1//===-- get_error_info_fuzzer.cpp -----------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#define SCUDO_FUZZ10#include "allocator_config.h"11#include "combined.h"12#include "common.h"13 14#include <fuzzer/FuzzedDataProvider.h>15 16#include <string>17#include <vector>18 19extern "C" int LLVMFuzzerTestOneInput(uint8_t *Data, size_t Size) {20  using AllocatorT = scudo::Allocator<scudo::AndroidConfig>;21  FuzzedDataProvider FDP(Data, Size);22 23  uintptr_t FaultAddr = FDP.ConsumeIntegral<uintptr_t>();24  uintptr_t MemoryAddr = FDP.ConsumeIntegral<uintptr_t>();25 26  std::string MemoryAndTags =27      FDP.ConsumeRandomLengthString(FDP.remaining_bytes());28  const char *Memory = MemoryAndTags.c_str();29  // Assume 16-byte alignment.30  size_t MemorySize = (MemoryAndTags.length() / 17) * 16;31  const char *MemoryTags = Memory + MemorySize;32 33  std::string StackDepotBytes =34      FDP.ConsumeRandomLengthString(FDP.remaining_bytes());35 36  std::string RegionInfoBytes =37      FDP.ConsumeRandomLengthString(FDP.remaining_bytes());38  std::vector<char> RegionInfo(AllocatorT::getRegionInfoArraySize(), 0);39  for (size_t i = 0; i < RegionInfoBytes.length() && i < RegionInfo.size();40       ++i) {41    RegionInfo[i] = RegionInfoBytes[i];42  }43 44  std::string RingBufferBytes = FDP.ConsumeRemainingBytesAsString();45 46  scudo_error_info ErrorInfo;47  AllocatorT::getErrorInfo(&ErrorInfo, FaultAddr, StackDepotBytes.data(),48                           StackDepotBytes.size(), RegionInfo.data(),49                           RingBufferBytes.data(), RingBufferBytes.size(),50                           Memory, MemoryTags, MemoryAddr, MemorySize);51  return 0;52}53