@matheusbsbs / matheus-bagliano / commits / 64f30e948b
Fork 0

diff.c: guard config parser from value=NULL

diff.external, diff.*.command, diff.color.*, color.diff.* and diff.*.funcname configuration variables expect a string value. Signed-off-by: Junio C Hamano <gitster@pobox.com>

Junio C Hamano committed Feb 11, 2008 at 10:53 UTC 64f30e948be5fb2cd2f65e91c0eab5ab4719c636
1 file changed +12 -2
diff.c
+12 -2
@@ -158,6 +158,8 @@ int git_diff_ui_config(const char *var, const char *value)
158 return 0;
159 }
160 if (!strcmp(var, "diff.external")) {
161 + if (!value)
162 + return config_error_nonbool(var);
163 external_diff_cmd_cfg = xstrdup(value);
164 return 0;
165 }
@@ -165,8 +167,11 @@ int git_diff_ui_config(const char *var, const char *value)
167 const char *ep = strrchr(var, '.');
168
169 if (ep != var + 4) {
168 - if (!strcmp(ep, ".command"))
170 + if (!strcmp(ep, ".command")) {
171 + if (!value)
172 + return config_error_nonbool(var);
173 return parse_lldiff_command(var, ep, value);
174 + }
175 }
176 }
177
@@ -177,6 +182,8 @@ int git_diff_basic_config(const char *var, const char *value)
182 {
183 if (!prefixcmp(var, "diff.color.") || !prefixcmp(var, "color.diff.")) {
184 int slot = parse_diff_color_slot(var, 11);
185 + if (!value)
186 + return config_error_nonbool(var);
187 color_parse(value, var, diff_colors[slot]);
188 return 0;
189 }
@@ -184,8 +191,11 @@ int git_diff_basic_config(const char *var, const char *value)
191 if (!prefixcmp(var, "diff.")) {
192 const char *ep = strrchr(var, '.');
193 if (ep != var + 4) {
187 - if (!strcmp(ep, ".funcname"))
194 + if (!strcmp(ep, ".funcname")) {
195 + if (!value)
196 + return config_error_nonbool(var);
197 return parse_funcname_pattern(var, ep, value);
198 + }
199 }
200 }
201