Alibek Omarov
3 years ago
7 changed files with 143 additions and 11 deletions
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
#include <dlfcn.h> |
||||
#include <stdio.h> |
||||
#include <stdlib.h> |
||||
|
||||
#if !defined LIB || !defined FUNC |
||||
#error |
||||
#endif |
||||
|
||||
typedef int (*FuzzFunc)(const char *Data, size_t Size); |
||||
|
||||
void *handle = NULL; |
||||
FuzzFunc f = NULL; |
||||
|
||||
int LLVMFuzzerTestOneInput( const char *Data, size_t Size ) |
||||
{ |
||||
if( !handle ) |
||||
handle = dlopen( LIB, RTLD_NOW ); |
||||
|
||||
if( handle ) |
||||
{ |
||||
if( !f ) |
||||
f = dlsym( handle, FUNC ); |
||||
|
||||
if( f ) |
||||
{ |
||||
return f( Data, Size ); |
||||
} |
||||
} |
||||
|
||||
fprintf( stderr, "Fail: %s\n", dlerror() ); |
||||
|
||||
abort(); |
||||
return 0; |
||||
} |
@ -0,0 +1,40 @@
@@ -0,0 +1,40 @@
|
||||
#! /usr/bin/env python |
||||
# encoding: utf-8 |
||||
# a1batross, mittorn, 2018 |
||||
|
||||
def options(opt): |
||||
pass |
||||
|
||||
def configure(conf): |
||||
if conf.options.BUILD_TYPE != 'sanitize': |
||||
conf.fatal('useless without -T sanitize') |
||||
|
||||
if conf.env.COMPILER_CC != 'clang': |
||||
conf.fatal('only clang is supported') |
||||
|
||||
conf.env.append_unique('CFLAGS', '-fsanitize=fuzzer') |
||||
conf.env.append_unique('LINKFLAGS', '-fsanitize=fuzzer') |
||||
|
||||
def add_runner_target(bld, lib, func): |
||||
source = bld.path.ant_glob('*.c') |
||||
includes = '.' |
||||
libs = [ 'DL' ] |
||||
|
||||
bld( |
||||
source = source, |
||||
target = 'run-fuzzer-' + func, |
||||
features = 'c cprogram', |
||||
includes = includes, |
||||
use = libs, |
||||
defines = ['FUNC="Fuzz_' + func + '"', 'LIB="' + lib + '"'], |
||||
install_path = bld.env.BINDIR, |
||||
subsystem = bld.env.CONSOLE_SUBSYSTEM |
||||
) |
||||
|
||||
def build(bld): |
||||
add_runner_target(bld, 'libxash.so', 'Sound_LoadMPG') |
||||
add_runner_target(bld, 'libxash.so', 'Sound_LoadWAV') |
||||
add_runner_target(bld, 'libxash.so', 'Image_LoadBMP') |
||||
add_runner_target(bld, 'libxash.so', 'Image_LoadPNG') |
||||
add_runner_target(bld, 'libxash.so', 'Image_LoadDDS') |
||||
add_runner_target(bld, 'libxash.so', 'Image_LoadTGA') |
Loading…
Reference in new issue