85 lines
2.9 KiB
Diff
85 lines
2.9 KiB
Diff
From 916fe62ae9b91a5d71cfa752f7cad89a558d7672 Mon Sep 17 00:00:00 2001
|
|
From: Sergey Poznyakoff <gray@gnu.org>
|
|
Date: Fri, 21 Dec 2018 07:59:02 +0200
|
|
Subject: [PATCH 35/58] Fix error handling when reading incremental snapshots
|
|
|
|
Bug reported in
|
|
http://lists.gnu.org/archive/html/bug-tar/2018-12/msg00008.html
|
|
|
|
* incremen.c (read_incr_db_01): Don't try to continue after errors.
|
|
---
|
|
src/incremen.c | 30 +++++++++++++++---------------
|
|
1 file changed, 15 insertions(+), 15 deletions(-)
|
|
|
|
diff --git a/src/incremen.c b/src/incremen.c
|
|
index 7c26eb8..8335a0c 100644
|
|
--- a/src/incremen.c
|
|
+++ b/src/incremen.c
|
|
@@ -998,10 +998,10 @@ read_incr_db_01 (int version, const char *initbuf)
|
|
newer_mtime_option = decode_timespec (buf, &ebuf, false);
|
|
|
|
if (! valid_timespec (newer_mtime_option))
|
|
- ERROR ((0, errno, "%s:%ld: %s",
|
|
- quotearg_colon (listed_incremental_option),
|
|
- lineno,
|
|
- _("Invalid time stamp")));
|
|
+ FATAL_ERROR ((0, errno, "%s:%ld: %s",
|
|
+ quotearg_colon (listed_incremental_option),
|
|
+ lineno,
|
|
+ _("Invalid time stamp")));
|
|
else
|
|
{
|
|
if (version == 1 && *ebuf)
|
|
@@ -1043,9 +1043,9 @@ read_incr_db_01 (int version, const char *initbuf)
|
|
mtime = decode_timespec (strp, &ebuf, false);
|
|
strp = ebuf;
|
|
if (!valid_timespec (mtime) || *strp != ' ')
|
|
- ERROR ((0, errno, "%s:%ld: %s",
|
|
- quotearg_colon (listed_incremental_option), lineno,
|
|
- _("Invalid modification time")));
|
|
+ FATAL_ERROR ((0, errno, "%s:%ld: %s",
|
|
+ quotearg_colon (listed_incremental_option), lineno,
|
|
+ _("Invalid modification time")));
|
|
|
|
errno = 0;
|
|
u = strtoumax (strp, &ebuf, 10);
|
|
@@ -1053,9 +1053,9 @@ read_incr_db_01 (int version, const char *initbuf)
|
|
errno = ERANGE;
|
|
if (errno || strp == ebuf || *ebuf != ' ')
|
|
{
|
|
- ERROR ((0, errno, "%s:%ld: %s",
|
|
- quotearg_colon (listed_incremental_option), lineno,
|
|
- _("Invalid modification time (nanoseconds)")));
|
|
+ FATAL_ERROR ((0, errno, "%s:%ld: %s",
|
|
+ quotearg_colon (listed_incremental_option), lineno,
|
|
+ _("Invalid modification time (nanoseconds)")));
|
|
mtime.tv_nsec = -1;
|
|
}
|
|
else
|
|
@@ -1069,17 +1069,17 @@ read_incr_db_01 (int version, const char *initbuf)
|
|
TYPE_MINIMUM (dev_t), TYPE_MAXIMUM (dev_t));
|
|
strp = ebuf;
|
|
if (errno || *strp != ' ')
|
|
- ERROR ((0, errno, "%s:%ld: %s",
|
|
+ FATAL_ERROR ((0, errno, "%s:%ld: %s",
|
|
quotearg_colon (listed_incremental_option), lineno,
|
|
- _("Invalid device number")));
|
|
+ _("Invalid device number")));
|
|
|
|
ino = strtosysint (strp, &ebuf,
|
|
TYPE_MINIMUM (ino_t), TYPE_MAXIMUM (ino_t));
|
|
strp = ebuf;
|
|
if (errno || *strp != ' ')
|
|
- ERROR ((0, errno, "%s:%ld: %s",
|
|
- quotearg_colon (listed_incremental_option), lineno,
|
|
- _("Invalid inode number")));
|
|
+ FATAL_ERROR ((0, errno, "%s:%ld: %s",
|
|
+ quotearg_colon (listed_incremental_option), lineno,
|
|
+ _("Invalid inode number")));
|
|
|
|
strp++;
|
|
unquote_string (strp);
|
|
--
|
|
2.19.1
|
|
|