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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html