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