mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-02 23:09:43 +00:00
50 lines
1.0 KiB
C
50 lines
1.0 KiB
C
/*
|
|
* libgit2 packfile 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 "git2.h"
|
|
#include "object.h"
|
|
|
|
#include "standalone_driver.h"
|
|
|
|
#define UNUSED(x) (void)(x)
|
|
|
|
int LLVMFuzzerInitialize(int *argc, char ***argv)
|
|
{
|
|
UNUSED(argc);
|
|
UNUSED(argv);
|
|
|
|
if (git_libgit2_init() < 0)
|
|
abort();
|
|
|
|
return 0;
|
|
}
|
|
|
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
|
|
{
|
|
const git_object_t types[] = {
|
|
GIT_OBJECT_BLOB, GIT_OBJECT_TREE, GIT_OBJECT_COMMIT, GIT_OBJECT_TAG
|
|
};
|
|
git_object *object = NULL;
|
|
size_t i;
|
|
|
|
/*
|
|
* Brute-force parse this as every object type. We want
|
|
* to stress the parsing logic anyway, so this is fine
|
|
* to do.
|
|
*/
|
|
for (i = 0; i < ARRAY_SIZE(types); i++) {
|
|
if (git_object__from_raw(&object, (const char *) data, size, types[i]) < 0)
|
|
continue;
|
|
git_object_free(object);
|
|
object = NULL;
|
|
}
|
|
|
|
return 0;
|
|
}
|