wireguard-tools/src/fuzz/set.c
Jason A. Donenfeld ef117a91d1 netlink: remove libmnl requirement
It turns out that the binary actually gets smaller if we simply inline
the very small parts of libmnl that we need. Since we wind up needing
the mnlg bits anyway, there's little benefit in linking to libmnl.

Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
2020-02-03 18:17:27 +01:00

57 lines
1.2 KiB
C

// SPDX-License-Identifier: GPL-2.0
/*
* Copyright (C) 2018-2020 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
*/
#include <stdio.h>
#undef stderr
#define stderr stdin
#define RUNSTATEDIR "/var/empty"
#include "../curve25519.c"
#define parse_allowedips parse_allowedips_ipc
#include "../ipc.c"
#undef parse_allowedips
#include "../encoding.c"
static FILE *hacked_fopen(const char *pathname, const char *mode);
#define fopen hacked_fopen
#include "../config.c"
#include "../set.c"
#undef stderr
#include <string.h>
#include <stdlib.h>
#include <assert.h>
const char *__asan_default_options()
{
return "verbosity=1";
}
const char *PROG_NAME = "wg";
static FILE *hacked_fopen(const char *pathname, const char *mode)
{
return fmemopen((char *)pathname, strlen(pathname), "r");
}
int LLVMFuzzerTestOneInput(const char *data, size_t data_len)
{
char *argv[8192] = { "set", "wg0" }, *args;
size_t argc = 2;
if (!data_len)
return 0;
assert((args = malloc(data_len)));
memcpy(args, data, data_len);
args[data_len - 1] = '\0';
for (char *arg = strtok(args, " \t\n\r"); arg && argc < 8192; arg = strtok(NULL, " \t\n\r")) {
if (arg[0])
argv[argc++] = arg;
}
set_main(argc, argv);
free(args);
return 0;
}