/* * Copyright (c) Meta Platforms, Inc. and affiliates. * All rights reserved. * * This source code is licensed under both the BSD-style license (found in the * LICENSE file in the root directory of this source tree) and the GPLv2 (found * in the COPYING file in the root directory of this source tree). * You may select, at your option, one of the above-listed licenses. */ #include "fuzz_helpers.h" #include #include #include void* FUZZ_malloc(size_t size) { if (size > 0) { void* const mem = malloc(size); FUZZ_ASSERT(mem); return mem; } return NULL; } void* FUZZ_malloc_rand(size_t size, FUZZ_dataProducer_t *producer) { if (size > 0) { void* const mem = malloc(size); FUZZ_ASSERT(mem); return mem; } else { uintptr_t ptr = 0; /* Add +- 1M 50% of the time */ if (FUZZ_dataProducer_uint32Range(producer, 0, 1)) FUZZ_dataProducer_int32Range(producer, -1000000, 1000000); return (void*)ptr; } } int FUZZ_memcmp(void const* lhs, void const* rhs, size_t size) { if (size == 0) { return 0; } return memcmp(lhs, rhs, size); }