summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2018-12-21 07:59:02 +0200
committerSergey Poznyakoff <gray@gnu.org>2018-12-21 13:54:11 +0200
commit916fe62ae9b91a5d71cfa752f7cad89a558d7672 (patch)
tree720cad5d1f11c3832d32db1b5a8b3ee643811d62
parent99d415e1902c2309a4a3da41b2f08e5719771336 (diff)
downloadtar-916fe62ae9b91a5d71cfa752f7cad89a558d7672.tar.gz
tar-916fe62ae9b91a5d71cfa752f7cad89a558d7672.tar.bz2
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.
-rw-r--r--src/incremen.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/src/incremen.c b/src/incremen.c
index 7c26eb80..8335a0c9 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);

Return to:

Send suggestions and report system problems to the System administrator.