mirror of
https://git.proxmox.com/git/libgit2
synced 2025-04-30 23:20:20 +00:00
66 lines
1.2 KiB
C
66 lines
1.2 KiB
C
/*
|
|
* libgit2 config file parser fuzz 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 "config_backend.h"
|
|
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <unistd.h>
|
|
#include <limits.h>
|
|
#include <errno.h>
|
|
|
|
#define UNUSED(x) (void)(x)
|
|
|
|
int foreach_cb(const git_config_entry *entry, void *payload)
|
|
{
|
|
UNUSED(entry);
|
|
UNUSED(payload);
|
|
|
|
return 0;
|
|
}
|
|
|
|
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)
|
|
{
|
|
git_config *cfg = NULL;
|
|
git_config_backend *backend = NULL;
|
|
int err = 0;
|
|
|
|
if ((err = git_config_new(&cfg)) != 0) {
|
|
goto out;
|
|
}
|
|
|
|
if ((err = git_config_backend_from_string(&backend, (const char*)data, size)) != 0) {
|
|
goto out;
|
|
}
|
|
if ((err = git_config_add_backend(cfg, backend, 0, NULL, 0)) != 0) {
|
|
goto out;
|
|
}
|
|
/* Now owned by the config */
|
|
backend = NULL;
|
|
|
|
git_config_foreach(cfg, foreach_cb, NULL);
|
|
out:
|
|
git_config_backend_free(backend);
|
|
git_config_free(cfg);
|
|
|
|
return 0;
|
|
}
|