648db22b |
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 | } |