1 /* 2 * Copyright (c) Meta Platforms, Inc. and affiliates. 3 * All rights reserved. 4 * 5 * This source code is licensed under both the BSD-style license (found in the 6 * LICENSE file in the root directory of this source tree) and the GPLv2 (found 7 * in the COPYING file in the root directory of this source tree). 8 * You may select, at your option, one of the above-listed licenses. 9 */ 10 #include "fuzz_helpers.h" 11 12 #include <stddef.h> 13 #include <stdlib.h> 14 #include <string.h> 15 16 void* FUZZ_malloc(size_t size) 17 { 18 if (size > 0) { 19 void* const mem = malloc(size); 20 FUZZ_ASSERT(mem); 21 return mem; 22 } 23 return NULL; 24 } 25 26 void* FUZZ_malloc_rand(size_t size, FUZZ_dataProducer_t *producer) 27 { 28 if (size > 0) { 29 void* const mem = malloc(size); 30 FUZZ_ASSERT(mem); 31 return mem; 32 } else { 33 uintptr_t ptr = 0; 34 /* Add +- 1M 50% of the time */ 35 if (FUZZ_dataProducer_uint32Range(producer, 0, 1)) 36 FUZZ_dataProducer_int32Range(producer, -1000000, 1000000); 37 return (void*)ptr; 38 } 39 40 } 41 42 int FUZZ_memcmp(void const* lhs, void const* rhs, size_t size) 43 { 44 if (size == 0) { 45 return 0; 46 } 47 return memcmp(lhs, rhs, size); 48 } 49