mailsplit: move NULL check before first use of file handle

The `split_mbox()` function calls fileno(f) to check whether the input
is a terminal, but the NULL check for f (from `fopen()`) does not happen
until later. When the file cannot be opened, f is NULL, and
`fileno(NULL)` is undefined behavior, typically crashing with a
segmentation fault.

Move the NULL check above the `isatty()`/`fileno()` call so the error
path is taken before any use of the potentially-NULL handle.

Pointed out by Coverity.

Assisted-by: Claude Opus 4.6
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Johannes Schindelin
2026-07-10 11:39:29 +00:00
committed by Junio C Hamano
parent d321f42c09
commit 775f1f2b19

View File

@@ -225,14 +225,14 @@ static int split_mbox(const char *file, const char *dir, int allow_bare,
FILE *f = !strcmp(file, "-") ? stdin : fopen(file, "r");
int file_done = 0;
if (isatty(fileno(f)))
warning(_("reading patches from stdin/tty..."));
if (!f) {
error_errno("cannot open mbox %s", file);
goto out;
}
if (isatty(fileno(f)))
warning(_("reading patches from stdin/tty..."));
do {
peek = fgetc(f);
if (peek == EOF) {