OK, I'll incorporate Jeff's changes, add a test and resubmit the patch. Thanks, -- Jharrod LaFon OpenEye Scientific Software On Aug 16, 2013, at 7:14 AM, Jeff King <peff@xxxxxxxx> wrote: > 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