mirror of
https://github.com/git/git
synced 2024-09-13 21:34:42 +00:00
fast-import pull request
* skip_optional_lf() decl is old-style -- please say static skip_optional_lf(void) { ... } * t9300 #14 fails, like this: * expecting failure: git-fast-import <input fatal: Branch name doesn't conform to GIT standards: .badbranchname fast-import: dumping crash report to .git/fast_import_crash_14354 ./test-lib.sh: line 143: 14354 Segmentation fault git-fast-import <input -- >8 -- Subject: [PATCH] fastimport: Fix re-use of va_list The va_list is designed to be used only once. The current code reuses va_list argument may cause segmentation fault. Copy and release the arguments to avoid this problem. While we are at it, fix old-style function declaration of skip_optional_lf(). Signed-off-by: Junio C Hamano <gitster@pobox.com> Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
parent
904b194151
commit
7e5dcea831
|
@ -442,16 +442,18 @@ static void write_crash_report(const char *err, va_list params)
|
||||||
static NORETURN void die_nicely(const char *err, va_list params)
|
static NORETURN void die_nicely(const char *err, va_list params)
|
||||||
{
|
{
|
||||||
static int zombie;
|
static int zombie;
|
||||||
|
va_list x_params;
|
||||||
|
|
||||||
|
va_copy(x_params, params);
|
||||||
fputs("fatal: ", stderr);
|
fputs("fatal: ", stderr);
|
||||||
vfprintf(stderr, err, params);
|
vfprintf(stderr, err, params);
|
||||||
fputc('\n', stderr);
|
fputc('\n', stderr);
|
||||||
|
|
||||||
if (!zombie) {
|
if (!zombie) {
|
||||||
zombie = 1;
|
zombie = 1;
|
||||||
write_crash_report(err, params);
|
write_crash_report(err, x_params);
|
||||||
}
|
}
|
||||||
|
va_end(x_params);
|
||||||
exit(128);
|
exit(128);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1618,7 +1620,7 @@ static void read_next_command(void)
|
||||||
} while (command_buf.buf[0] == '#');
|
} while (command_buf.buf[0] == '#');
|
||||||
}
|
}
|
||||||
|
|
||||||
static void skip_optional_lf()
|
static void skip_optional_lf(void)
|
||||||
{
|
{
|
||||||
int term_char = fgetc(stdin);
|
int term_char = fgetc(stdin);
|
||||||
if (term_char != '\n' && term_char != EOF)
|
if (term_char != '\n' && term_char != EOF)
|
||||||
|
|
Loading…
Reference in a new issue