Skip to content

Commit c530728

Browse files
committed
config: propagate launch_editor() failure in show_editor()
show_editor() calls launch_editor() to open the user's editor on the configuration file, but discards the return value and unconditionally returns 0 (success). When the editor fails to launch (e.g., $EDITOR is not found, or the editor exits with a nonzero status), the caller receives no indication that anything went wrong. This affects "git config edit" and "git config --edit": the command silently succeeds even when the editor could not be started. In contrast, other editor-launching paths in git (such as "git commit" and "git rebase --edit-todo") properly propagate editor failures and exit with an error. Check the return value and propagate the failure by returning -1. The two callers (cmd_config_edit at line 1315 and the legacy cmd_config at line 1478) both propagate this return to handle_builtin, which translates negative returns into an error exit. Pointed out by Coverity. Assisted-by: Claude Opus 4.6 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
1 parent 8235a3a commit c530728

1 file changed

Lines changed: 4 additions & 1 deletion

File tree

builtin/config.c

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1290,7 +1290,10 @@ static int show_editor(struct config_location_options *opts)
12901290
else if (errno != EEXIST)
12911291
die_errno(_("cannot create configuration file %s"), config_file);
12921292
}
1293-
launch_editor(config_file, NULL, NULL);
1293+
if (launch_editor(config_file, NULL, NULL)) {
1294+
free(config_file);
1295+
return -1;
1296+
}
12941297
free(config_file);
12951298

12961299
return 0;

0 commit comments

Comments
 (0)