From 1270fac69d2f7e89161ccb780ce3b17466da34ea Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Mon, 2 May 2016 19:37:43 +0300 Subject: [PATCH] Fix startup on MS-Windows when 'gdb.ini' is found in $HOME * windows-nat.c (_initialize_check_for_gdb_ini): Fix off-by-one error in allocation of space for "$HOME/.gdbinit" string. This caused GDB to abort on startup whenever a '~/gdb.ini' file was actually found, because xsnprintf would hit an assertion violation. --- gdb/ChangeLog | 8 ++++++++ gdb/windows-nat.c | 6 +++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 6d7bfb27ee8..7d69419b8cc 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2016-05-02 Eli Zaretskii + + * windows-nat.c (_initialize_check_for_gdb_ini): Fix off-by-one + error in allocation of space for "$HOME/.gdbinit" string. This + caused GDB to abort on startup whenever a '~/gdb.ini' file was + actually found, because xsnprintf would hit an assertion + violation. + 2016-04-28 Simon Marchi * cli/cli-decode.c (help_cmd_list): Do not list commands that diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c index 71d6670aaa0..2e8a777411d 100644 --- a/gdb/windows-nat.c +++ b/gdb/windows-nat.c @@ -2702,7 +2702,7 @@ _initialize_check_for_gdb_ini (void) { char *p; char *oldini = (char *) alloca (strlen (homedir) + - sizeof ("/gdb.ini")); + sizeof ("gdb.ini") + 1); strcpy (oldini, homedir); p = strchr (oldini, '\0'); if (p > oldini && !IS_DIR_SEPARATOR (p[-1])) @@ -2711,9 +2711,9 @@ _initialize_check_for_gdb_ini (void) if (access (oldini, 0) == 0) { int len = strlen (oldini); - char *newini = (char *) alloca (len + 1); + char *newini = (char *) alloca (len + 2); - xsnprintf (newini, len + 1, "%.*s.gdbinit", + xsnprintf (newini, len + 2, "%.*s.gdbinit", (int) (len - (sizeof ("gdb.ini") - 1)), oldini); warning (_("obsolete '%s' found. Rename to '%s'."), oldini, newini); } -- 2.30.2