submodule: handle NULL value when parsing submodule.*.branch
We record the submodule branch config value as a string, so config that uses an implicit bool like: [submodule "foo"] branch will cause us to segfault. Note that unlike most other config-parsing bugs of this class, this can be triggered by parsing a bogus .gitmodules file (which we might do after cloning a malicious repository). I don't think the security implications are important, though. It's always a strict NULL dereference, not an out-of-bounds read or write. So we should reliably kill the process. That may be annoying, but the impact is limited to the attacker preventing the victim from successfully using "git clone --recurse-submodules", etc, on the malicious repo. The "branch" entry is the only one with this problem; other strings like "path" and "url" already check for NULL. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
89086c9466
commit
34b1a0d320
|
@ -516,7 +516,9 @@ static int parse_config(const char *var, const char *value,
|
|||
submodule->recommend_shallow =
|
||||
git_config_bool(var, value);
|
||||
} else if (!strcmp(item.buf, "branch")) {
|
||||
if (!me->overwrite && submodule->branch)
|
||||
if (!value)
|
||||
ret = config_error_nonbool(var);
|
||||
else if (!me->overwrite && submodule->branch)
|
||||
warn_multiple_config(me->treeish_name, submodule->name,
|
||||
"branch");
|
||||
else {
|
||||
|
|
Loading…
Reference in New Issue