1de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// This file is distributed under the University of Illinois Open Source 2de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// License. See LICENSE.TXT for details. 3de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 4de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar// Tests OOM handling when there is a single large allocation. 5de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include <assert.h> 6de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include <cstdint> 7de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include <cstdlib> 8de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include <cstddef> 9de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include <cstring> 10de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include <iostream> 11de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar#include <unistd.h> 12de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 13de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarstatic volatile char *SinkPtr; 14de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 15de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainarextern "C" int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { 16de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar if (Size > 0 && Data[0] == 'H') { 17de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar if (Size > 1 && Data[1] == 'i') { 18de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar if (Size > 2 && Data[2] == '!') { 19de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar size_t kSize = (size_t)1 << 31; 20de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar char *p = new char[kSize]; 21de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar memset(p, 0, kSize); 22de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar SinkPtr = p; 23de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar delete [] p; 24de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar } 25de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar } 26de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar } 27de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar return 0; 28de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar} 29de2d8694e25a814696358e95141f4b1aa4d8847ePirama Arumuga Nainar 30