git subrepo pull (merge) --force deps/libchdr
[pcsx_rearmed.git] / deps / libchdr / deps / zstd-1.5.5 / tests / fuzz / fuzz_helpers.c
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 }