Blame contributed/libfuzzer-onig.cpp

Packit Service bd74e6
/* libfuzzer test code for oniguruma
Packit Service bd74e6
 * author: Hanno Böck, license: CC0/public domain
Packit Service bd74e6
Packit Service bd74e6
Usage:
Packit Service bd74e6
* compile oniguruma with something like
Packit Service bd74e6
	./configure CC=clang LD=clang CFLAGS="-fsanitize-coverage=edge -fsanitize=address" \
Packit Service bd74e6
		LDFLAGS="-fsanitize-coverage=edge -fsanitize=address"
Packit Service bd74e6
* Compile libfuzzer stub and link against static libonig.a and libFuzzer.a:
Packit Service bd74e6
	clang++ libfuzzer-onig.cpp src/.libs/libonig.a libFuzzer.a -o libfuzzer-onig \
Packit Service bd74e6
		-fsanitize-coverage=edge -fsanitize=address
Packit Service bd74e6
* Put sample patterns in directory "in/"
Packit Service bd74e6
* Run
Packit Service bd74e6
	./libfuzzer-onig in
Packit Service bd74e6
Packit Service bd74e6
Consult libfuzzer docs for further details and how to create libFuzzer.a:
Packit Service bd74e6
http://llvm.org/docs/LibFuzzer.html
Packit Service bd74e6
Packit Service bd74e6
 */
Packit Service bd74e6
#include <stdint.h>
Packit Service bd74e6
#include <string.h>
Packit Service bd74e6
#include <oniguruma.h>
Packit Service bd74e6
Packit Service bd74e6
extern "C" int LLVMFuzzerTestOneInput(const uint8_t * Data, size_t Size)
Packit Service bd74e6
{
Packit Service bd74e6
	regex_t *reg;
Packit Service bd74e6
  OnigEncoding enc;
Packit Service bd74e6
Packit Service bd74e6
  enc = ONIG_ENCODING_UTF8;
Packit Service bd74e6
Packit Service bd74e6
#ifdef FULL_TEST
Packit Service bd74e6
  onig_initialize(&enc, 1);
Packit Service bd74e6
#endif
Packit Service bd74e6
Packit Service bd74e6
	if (onig_new(&reg, Data, Data + Size, ONIG_OPTION_DEFAULT, enc,
Packit Service bd74e6
               ONIG_SYNTAX_DEFAULT, 0) == 0)
Packit Service bd74e6
		onig_free(reg);
Packit Service bd74e6
Packit Service bd74e6
#ifdef FULL_TEST
Packit Service bd74e6
  onig_end();
Packit Service bd74e6
#endif
Packit Service bd74e6
Packit Service bd74e6
	return 0;
Packit Service bd74e6
}