diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2018-12-21 07:59:02 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2018-12-21 13:54:11 +0200 |
commit | 916fe62ae9b91a5d71cfa752f7cad89a558d7672 (patch) | |
tree | 720cad5d1f11c3832d32db1b5a8b3ee643811d62 | |
parent | 99d415e1902c2309a4a3da41b2f08e5719771336 (diff) | |
download | tar-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.c | 30 |
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); |