On Fri, Aug 16, 2013 at 09:09:58AM -0400, Jeff King wrote: > > > - if (parse_config_key(var, "submodule", &name, &namelen, &key) < 0 || !name) > > > + if (parse_config_key(var, "submodule", &name, &namelen, &key) < 0 || !name || !value) > > > return 0; > > I think this is also the wrong place to make the check, anyway. It is > saying that all values of submodule.X.Y must be non-NULL. But that is > not true. The submodule.X.fetchRecurseSubmodules option can be a > boolean, and: > > [submodule "foo"] > fetchRecurseSubmodules > > is perfectly valid (and is broken by this patch). IOW, I think this is the right fix: diff --git a/submodule.c b/submodule.c index 3f0a3f9..c0f93c2 100644 --- a/submodule.c +++ b/submodule.c @@ -134,6 +134,9 @@ int parse_submodule_config_option(const char *var, const char *value) return 0; if (!strcmp(key, "path")) { + if (!value) + return config_error_nonbool(var); + config = unsorted_string_list_lookup(&config_name_for_path, value); if (config) free(config->util); @@ -151,6 +154,9 @@ int parse_submodule_config_option(const char *var, const char *value) } else if (!strcmp(key, "ignore")) { char *name_cstr; + if (!value) + return config_error_nonbool(var); + if (strcmp(value, "untracked") && strcmp(value, "dirty") && strcmp(value, "all") && strcmp(value, "none")) { warning("Invalid parameter \"%s\" for config option \"submodule.%s.ignore\"", value, var); And new options, as they are added, must decide whether they are boolean or not (and check !value as appropriate). -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html