mirror of
https://github.com/libgit2/libgit2.git
synced 2026-01-25 02:56:17 +00:00
fuzzer: add a revparse fuzzer
This commit is contained in:
1
fuzzers/corpora/revparse/head
Normal file
1
fuzzers/corpora/revparse/head
Normal file
@@ -0,0 +1 @@
|
||||
HEAD
|
||||
1
fuzzers/corpora/revparse/revat
Normal file
1
fuzzers/corpora/revparse/revat
Normal file
@@ -0,0 +1 @@
|
||||
xxxxxxxxxxxxxxxx@
|
||||
52
fuzzers/revparse_fuzzer.c
Normal file
52
fuzzers/revparse_fuzzer.c
Normal file
@@ -0,0 +1,52 @@
|
||||
/*
|
||||
* libgit2 revparse fuzzer target.
|
||||
*
|
||||
* Copyright (C) the libgit2 contributors. All rights reserved.
|
||||
*
|
||||
* This file is part of libgit2, distributed under the GNU GPL v2 with
|
||||
* a Linking Exception. For full terms see the included COPYING file.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "git2.h"
|
||||
|
||||
#include "standalone_driver.h"
|
||||
#include "fuzzer_utils.h"
|
||||
|
||||
#define UNUSED(x) (void)(x)
|
||||
|
||||
static git_repository *repo;
|
||||
|
||||
int LLVMFuzzerInitialize(int *argc, char ***argv)
|
||||
{
|
||||
UNUSED(argc);
|
||||
UNUSED(argv);
|
||||
|
||||
if (git_libgit2_init() < 0)
|
||||
abort();
|
||||
|
||||
if (git_libgit2_opts(GIT_OPT_SET_PACK_MAX_OBJECTS, 10000000) < 0)
|
||||
abort();
|
||||
|
||||
repo = fuzzer_repo_init();
|
||||
return 0;
|
||||
}
|
||||
|
||||
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
|
||||
{
|
||||
git_object *obj = NULL;
|
||||
char *c;
|
||||
|
||||
if ((c = calloc(1, size + 1)) == NULL)
|
||||
abort();
|
||||
|
||||
memcpy(c, data, size);
|
||||
|
||||
git_revparse_single(&obj, repo, c);
|
||||
git_object_free(obj);
|
||||
free(c);
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user