aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2018-07-02 19:46:24 +0300
committerSergey Poznyakoff <gray@gnu.org>2018-07-02 19:46:24 +0300
commitb4333893277f7e4e4b5e673c158cc8b68ce1ea93 (patch)
tree379eae4af3a8d9ade7c4bdff96430b65213ef1c8
parent030e685eb9df82f63d73a1bf206da84b7aa52374 (diff)
downloadgdbm-b4333893277f7e4e4b5e673c158cc8b68ce1ea93.tar.gz
gdbm-b4333893277f7e4e4b5e673c158cc8b68ce1ea93.tar.bz2
Bugfixes
* src/recover.c (backup_name): Fix memory overwrite. * src/gdbmtool.c (recover_handler): New option "force".
-rw-r--r--src/gdbmtool.c6
-rw-r--r--src/recover.c2
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)
591 rcvr.errfun = err_printer; 591 rcvr.errfun = err_printer;
592 flags |= GDBM_RCVR_ERRFUN; 592 flags |= GDBM_RCVR_ERRFUN;
593 } 593 }
594 else if (strcmp (arg, "force") == 0)
595 {
596 flags |= GDBM_RCVR_FORCE;
597 }
594 else if (strcmp (arg, "summary") == 0) 598 else if (strcmp (arg, "summary") == 0)
595 { 599 {
596 summary = 1; 600 summary = 1;
597 } 601 }
598 else if (strcmp (arg, "backup") == 0) 602 else if (strcmp (arg, "backup") == 0)
599 { 603 {
600 rcvr.errfun = err_printer;
601 flags |= GDBM_RCVR_BACKUP; 604 flags |= GDBM_RCVR_BACKUP;
602 } 605 }
603 else if (strncmp (arg, "max-failures=", 13) == 0) 606 else if (strncmp (arg, "max-failures=", 13) == 0)
@@ -1263,6 +1266,7 @@ struct command command_tab[] = {
1263 { { "[verbose]", GDBM_ARG_STRING }, 1266 { { "[verbose]", GDBM_ARG_STRING },
1264 { "[summary]", GDBM_ARG_STRING }, 1267 { "[summary]", GDBM_ARG_STRING },
1265 { "[backup]", GDBM_ARG_STRING }, 1268 { "[backup]", GDBM_ARG_STRING },
1269 { "[force]", GDBM_ARG_STRING },
1266 { "[max-failed-keys=N]", GDBM_ARG_STRING }, 1270 { "[max-failed-keys=N]", GDBM_ARG_STRING },
1267 { "[max-failed-buckets=N]", GDBM_ARG_STRING }, 1271 { "[max-failed-buckets=N]", GDBM_ARG_STRING },
1268 { "[max-failures=N]", GDBM_ARG_STRING }, 1272 { "[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)
52 52
53#define INITIAL_SUFFIX ".~1~" 53#define INITIAL_SUFFIX ".~1~"
54 54
55 len = strlen (name + sizeof (INITIAL_SUFFIX)); 55 len = strlen (name) + sizeof (INITIAL_SUFFIX);
56 buf = malloc (len); 56 buf = malloc (len);
57 if (!buf) 57 if (!buf)
58 return NULL; 58 return NULL;

Return to:

Send suggestions and report system problems to the System administrator.