From b4333893277f7e4e4b5e673c158cc8b68ce1ea93 Mon Sep 17 00:00:00 2001 From: Sergey Poznyakoff Date: Mon, 2 Jul 2018 19:46:24 +0300 Subject: Bugfixes * src/recover.c (backup_name): Fix memory overwrite. * src/gdbmtool.c (recover_handler): New option "force". --- src/gdbmtool.c | 6 +++++- src/recover.c | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/gdbmtool.c b/src/gdbmtool.c index 5ae668c..454465e 100644 --- a/src/gdbmtool.c +++ b/src/gdbmtool.c @@ -591,13 +591,16 @@ recover_handler (struct handler_param *param) rcvr.errfun = err_printer; flags |= GDBM_RCVR_ERRFUN; } + else if (strcmp (arg, "force") == 0) + { + flags |= GDBM_RCVR_FORCE; + } else if (strcmp (arg, "summary") == 0) { summary = 1; } else if (strcmp (arg, "backup") == 0) { - rcvr.errfun = err_printer; flags |= GDBM_RCVR_BACKUP; } else if (strncmp (arg, "max-failures=", 13) == 0) @@ -1263,6 +1266,7 @@ struct command command_tab[] = { { { "[verbose]", GDBM_ARG_STRING }, { "[summary]", GDBM_ARG_STRING }, { "[backup]", GDBM_ARG_STRING }, + { "[force]", GDBM_ARG_STRING }, { "[max-failed-keys=N]", GDBM_ARG_STRING }, { "[max-failed-buckets=N]", GDBM_ARG_STRING }, { "[max-failures=N]", GDBM_ARG_STRING }, diff --git a/src/recover.c b/src/recover.c index f6859ea..a64a1b4 100644 --- a/src/recover.c +++ b/src/recover.c @@ -52,7 +52,7 @@ backup_name (char const *name) #define INITIAL_SUFFIX ".~1~" - len = strlen (name + sizeof (INITIAL_SUFFIX)); + len = strlen (name) + sizeof (INITIAL_SUFFIX); buf = malloc (len); if (!buf) return NULL; -- cgit v1.2.1