mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
Refactor `parse_commit_graph()` so that it takes a repository instead of
taking repository settings. On the one hand this allows us to get rid of
instances where we access `the_hash_algo` by using the repository's hash
algorithm instead. On the other hand it also allows us to move the call
of `prepare_repo_settings()` into the function itself.
Note that there's one small catch, as the commit-graph fuzzer calls this
function directly without having a fully functional repository at hand.
And while the fuzzer already initializes `the_repository` with relevant
info, the call to `prepare_repo_settings()` would fail because we don't
have a fully-initialized repository.
Work around the issue by also settings `settings.initialized` to pretend
that we've already read the settings.
While at it, remove the redundant `parse_commit_graph()` declaration in
the fuzzer. It was added together with aa658574bf (commit-graph, fuzz:
add fuzzer for commit-graph, 2019-01-15), but as we also declared the
same function in "commit-graph.h" it wasn't ever needed.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
31 lines
892 B
C
31 lines
892 B
C
#define USE_THE_REPOSITORY_VARIABLE
|
|
|
|
#include "git-compat-util.h"
|
|
#include "commit-graph.h"
|
|
#include "repository.h"
|
|
|
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
|
|
|
|
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
|
|
{
|
|
struct commit_graph *g;
|
|
|
|
initialize_repository(the_repository);
|
|
|
|
/*
|
|
* Initialize the_repository with commit-graph settings that would
|
|
* normally be read from the repository's gitdir. We want to avoid
|
|
* touching the disk to keep the individual fuzz-test cases as fast as
|
|
* possible.
|
|
*/
|
|
repo_set_hash_algo(the_repository, GIT_HASH_SHA1);
|
|
the_repository->settings.initialized = 1;
|
|
the_repository->settings.commit_graph_generation_version = 2;
|
|
the_repository->settings.commit_graph_changed_paths_version = 1;
|
|
g = parse_commit_graph(the_repository, (void *)data, size);
|
|
repo_clear(the_repository);
|
|
free_commit_graph(g);
|
|
|
|
return 0;
|
|
}
|