Home | History | Annotate | Line # | Download | only in fuzz
      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