]> git.ipfire.org Git - thirdparty/git.git/blob - oss-fuzz/fuzz-config.c
Merge branch 'ps/pack-refs-auto' into jt/reftable-geometric-compaction
[thirdparty/git.git] / oss-fuzz / fuzz-config.c
1 #include "git-compat-util.h"
2 #include "config.h"
3
4 int LLVMFuzzerTestOneInput(const uint8_t *, size_t);
5 static int config_parser_callback(const char *, const char *,
6 const struct config_context *, void *);
7
8 static int config_parser_callback(const char *key, const char *value,
9 const struct config_context *ctx UNUSED,
10 void *data UNUSED)
11 {
12 /*
13 * Visit every byte of memory we are given to make sure the parser
14 * gave it to us appropriately. We need to unconditionally return 0,
15 * but we also want to prevent the strlen from being optimized away.
16 */
17 size_t c = strlen(key);
18
19 if (value)
20 c += strlen(value);
21 return c == SIZE_MAX;
22 }
23
24 int LLVMFuzzerTestOneInput(const uint8_t *data, const size_t size)
25 {
26 struct config_options config_opts = { 0 };
27
28 config_opts.error_action = CONFIG_ERROR_SILENT;
29 git_config_from_mem(config_parser_callback, CONFIG_ORIGIN_BLOB,
30 "fuzztest-config", (const char *)data, size, NULL,
31 CONFIG_SCOPE_UNKNOWN, &config_opts);
32 return 0;
33 }