aboutsummaryrefslogtreecommitdiff
path: root/fuzz/fuzz_alg_crc32_md5.c
blob: 15c817989547e0e74979d1dd2101aa6c24a1ca21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "ndpi_api.h"
#include "ndpi_md5.h"

int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
  u_char hash[16];
  ndpi_MD5_CTX ctx;
  struct ndpi_popcount popcount;
  char *str;

  /* No memory allocations involved */

  /* Used for crc32, md5, hash(es) and popcount algs */

  ndpi_crc16_ccit(data, size);
  ndpi_crc16_ccit_false(data, size);
  ndpi_crc16_xmodem(data, size);
  ndpi_crc16_x25(data, size);
  ndpi_crc32(data, size);

  ndpi_md5(data, size, hash);

  ndpi_MD5Init(&ctx);
  ndpi_MD5Update(&ctx, data, size / 2);
  ndpi_MD5Update(&ctx, data + size / 2, size - size / 2);
  ndpi_MD5Final(hash, &ctx);

  ndpi_murmur_hash((const char *)data, size);
  ndpi_quick_hash(data, size);

  if(size >= 16)
    ndpi_quick_16_byte_hash(data);

  str = ndpi_malloc(size + 1);
  if(str) {
    memcpy(str, data, size);
    str[size] = '\0';

    ndpi_quick_hash64((const char *)str, strlen(str));
    ndpi_hash_string(str);
    ndpi_rev_hash_string(str);
    ndpi_hash_string_len(str, strlen(str));

    ndpi_free(str);
  }
  

  ndpi_popcount_init(&popcount);
  ndpi_popcount_count(&popcount, data, size);

  return 0;
}