]> Dogcows Code - chaz/tar/blobdiff - ChangeLog
Carefully crafted invalid headers can cause buffer overrun.
[chaz/tar] / ChangeLog
index 60aabcc6c66d8df419818bd9b4340b7e939d29ea..14e01a7a69a6abb2c9a6b0f586c00eb15bb94344 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,256 @@
+2005-06-21  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Further improvements inspired by Jim Meyering's fixes.
+
+       * NEWS: Better support for full-resolution time stamps.
+       The -v option now prints time stamps only to 1-minute resolution.
+       * gnulib.modules: Add utimens.
+       * lib/.cvsignore: Add imaxtostr.c, inttostr.c, inttostr.h,
+       offtostr.c, umaxtostr.c, utimens.c, utimens.h.  Remove paxconvert.c.
+       * lib/Makefile.tmpl (libtar_a_SOURCES): Remove paxconvert.c.
+       * lib/paxconvert.c: Remove; superseded by umaxtostr.c.
+       * po/POTFILES.in: Remove lib/paxconvert.c.  Add lib/xalloc-die.c,
+       lib/obstack.c.
+       * src/buffer.c (set_start_time, compute_duration, start_time):
+       Use gettime rather than rolling our own code.
+       * src/common.h (OLDGNU_NAME_FIELD_SIZE, MAXOCTAL11, MAXOCTAL7): Remove.
+       (newer_ctime_option): Remove.
+       (timespec_lt): New function.
+       (OLDER_STAT_TIME): Use it.
+       (string_to_chars): First arg is char const *, not char *.
+       (tartime): Time arg is now struct timespec.  New bool arg.
+       All callers changed.
+       (code_ns_fraction): New decl.
+       (sys_stat_nanoseconds): Remove decl.
+       (get_stat_atime, get_stat_ctime, get_stat_mtime): New functions.
+       (set_stat_atime, set_stat_ctime, set_stat_mtime): New functions.
+       * src/compare.c: Include utimens.h rather than rolling our own.
+       (diff_dir, diff_file, diff_link, diff_symlink, diff_special):
+       Prototype.
+       (diff_dumpdir, diff_multivol): Prototype.
+       (diff_file): Support higher-resolution time stamps.
+       * src/create.c: Include utimens.h rather than rolling our own.
+       (MAX_OCTAL_VAL): New macro.
+       (tar_copy_str, string_to_chars): Don't bother to zero-fill;
+       the destination is already zeroed.
+       (string_to_chars): First arg is char const *.
+       (start_private_header): Use MINOR_TO_CHARS, not MAJOR_TO_CHARS,
+       for minor device number.
+       (write_header_name, dump_hard_link, dump_file0):
+       Simplify test for old GNU format.
+       (start_header): Put in placeholders for uid, etc., even when
+       using extended headers, for benefit of older "tar" implementations.
+       Don't assume uintmax_t is wider than 32 bits.
+       Output extended header for mtime if needed.
+       (dump_regular_finish, dump_file0):
+       Support extended time stamp resolution.
+       * src/extract.c: Include utimens.h rather than rolling our own.
+       (check_time): Support extended time stamp resolution.
+       * src/list.c: Include <inttostr.h>.
+       (tartime): Use umaxtostr rather than stringify_uintmax_t_backwards.
+       * src/xheader.c: Include <inttostr.h>.
+       Do not include <xstrtol.h>.
+       (strtoimax) [!HAVE_DECL_STRTOIMAX && !defined strtoimax]: New decl.
+       (strtoumax) [!HAVE_DECL_STRTOUMAX && !defined strtoumax]: New decl.
+       (BILLION, LOG10_BILLION): New constants.
+       (to_decimal): Remove; superseded by inttostr.  All callers changed
+       to use umaxtostr.
+       (xheader_format_name): Don't assume pids and uintmax_t values
+       fit in 63 bytes (!) when printed.
+       (decode_record): Don't bother to check for ERANGE; an out of range
+       value must be treater than len_max anyway.
+       If the length is out of range, output it in the diagnostic.
+       (format_uintmax): Remove; all callers changed to use umaxtostr.
+       (xheader_print): Don't assume sizes can be printed in 99 bytes (!).
+       (out_of_range_header): New function.
+       (decode_time): Use it.
+       (code_time): Accept struct timespec, not time_t and unsigned long.
+       All callers changed.  Size sbuf properly, and remove unnecessary check.
+       Don't assume time stamps can fit in 199 bytes.
+       Handle negative time stamps.  Handle fractional time stamps
+       more consistently.  Don't output unnecessary trailing zeros.
+       (decode_time): Yield struct timespec, not time_t and unsigned long.
+       All callers changed.
+       Handle negative time stamps.  Truncate towards minus infinity
+       consistently.  Improve overflow checks, and output a better
+       diagnostic on overflow.
+       (code_num): Don't assume uintmax_t can be printed in 99 bytes (!).
+       (decode_num): New function, for better diagnostics.
+       (atime_coder, atime_decoder, gid_decoder, ctime_coder):
+       (ctime_decoder, mtime_coder, mtime_decoder, size_decoder):
+       (uid_decoder, sparse_size_decoder, sparse_numblocks_decoder):
+       (sparse_offset_decoder, sparse_numbytes_decoder):
+       Use decode_num, etc., instead of xstrtoumax, etc.
+
+2005-06-21  Jim Meyering  <jim@meyering.net>
+
+       Carefully crafted invalid headers can cause buffer overrun.
+       Invalid header fields go undiagnosed.
+       Some valid time strings are ignored.
+
+       * src/xheader.c (sparse_numblocks_decoder): Remove unchecked use
+       of `calloc'.  Use xcalloc instead.
+       (decode_time, gid_decoder, size_decoder, uid_decoder):
+       (sparse_size_decoder, sparse_offset_decoder, sparse_numblocks_decoder):
+       Ensure that the result of calling xstrtoumax is no larger than
+       the maximum value for the target type.  Upon any failure, exit with
+       a diagnostic.
+       (sparse_numblocks_decoder): Avoid buffer overrun/heap corruption:
+       use x2nrealloc, rather than `n *= 2' and xrealloc(p, n,....
+       (decode_time): Rewrite to accept time strings like
+       1119018481.000000000.  Before, such strings were always ignored.
+
+2005-06-13  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * src/create.c (dump_file0): Check for is_avoided_name()
+       first. Fixes bug reported by Martin Lohmeier
+       <martin@mein-horde.de>
+       * tests/update.at: New file
+       * tests/Makefile.am (TESTSUITE_AT): Add update.at
+       * tests/testsuite.at: Likewise
+
+2005-06-13  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * configure.ac (AC_STRUCT_ST_BLKSIZE)
+       (AC_STRUCT_ST_BLOCKS): Removed. Handled by system.m4.
+
+2005-06-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/names.c (excluded_name): excluded_filename ->
+       excluded_file_name, because the name was changed in gnulib.
+
+2005-05-30  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * src/tar.c (read_name_from_file,update_argv): Automatically
+       detect nul-terminated list files.
+       * NEWS: Updated
+
+2005-05-27  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * scripts/backup.sh.in: Bugfixes.
+
+2005-05-26  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * scripts/backup.in: Minor fixes
+       * scripts/backup.sh.in (mt_begin,mt_rewind)
+       (mt_offline,mt_status): Use $MT to invoke mt
+       (init_common): Set --rsh-command option for mt if TAPE_FILE is a
+       remote archive.
+       * doc/tar.texi: Document new backup scripts behavior
+
+2005-05-22  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * lib/.cvsignore: Updated
+       * lib/Makefile.tmpl: Add new paxutils files
+       * po/POTFILES.in: Likewise
+       * src/buffer.c: Update invocations of safer_name_suffix()
+       * src/create.c: Likewise
+       * src/extract.c: Likewise
+       * src/xheader.c: Likewise
+       * src/common.h: Include paxlib.h instead of paxerror.h
+       (safer_name_suffix,removed_prefixes_p): Removed. The functions are
+       imported from paxutils
+       * src/names.c (hash_string_hasher,hash_string_compare)
+       (hash_string_insert,hash_string_lookup,removed_prefixes_p)
+       (safer_name_suffix): Moved to paxutils
+
+2005-05-19  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * bootstrap (copy_files): Accept optional third argument: a prefix
+       to be appended to destination file names.
+       Import paxutils/paxlib files.
+       * configure.ac: Remove checking for LIB_SETSOCKOPT, it is handled
+       by paxutils.
+       * lib/Makefile.tmpl (libtar_a_SOURCES): Add paxerror.c paxexit.c
+       paxconvert.c
+       * po/POTFILES.in: Likewise.
+       * src/common.h: Remove defines and declarations imported from
+       paxutils
+       * src/misc.c: Likewise
+       * src/list.c (stringify_uintmax_t_backwards): Moved to paxutils
+
+2005-05-17  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * src/misc.c (remove_any_file): Fix typo in previous change.
+
+2005-05-14  Paul Eggert  <eggert@cs.ucla.edu>
+
+       Port to Solaris 10's treatment of unlinking directories.
+       * gnulib-modules: Add unlinkdir.
+       * lib/.cvsignore: Add unlinkdir.h, unlinkdir.c.
+       * src/common.h (we_are_root): Remove extern decl; it's now static.
+       * src/extract.c (we_are_root): Now static.
+       * src/misc.c: Include <unlinkdir.h>.
+       (remove_any_file): Use cannot_unlink_dir () rather than we_are_root.
+
+       * ChangeLog, ChangeLog.1, Makefile.am, NEWS, PORTS, README,
+       README-alpha, TODO, bootstrap, configure.ac, doc/Makefile.am,
+       doc/convtexi.pl, doc/fdl.texi, doc/gendocs_template,
+       lib/Makefile.tmpl, lib/prepargs.c, lib/waitpid.c, po/POTFILES.in,
+       scripts/Makefile.am, scripts/backup-specs, scripts/backup.in,
+       scripts/backup.sh.in, scripts/restore.in, src/Makefile.am,
+       src/arith.h, src/buffer.c, src/common.h, src/compare.c,
+       src/create.c, src/delete.c, src/extract.c, src/incremen.c,
+       src/list.c, src/mangle.c, src/misc.c, src/names.c, src/sparse.c,
+       src/system.c, src/tar.c, src/tar.h, src/update.c, src/utf8.c,
+       src/xheader.c, tests/Makefile.am, tests/append.at,
+       tests/append01.at, tests/comprec.at, tests/delete01.at,
+       tests/delete02.at, tests/delete03.at, tests/delete04.at,
+       tests/delete05.at, tests/extrac01.at, tests/extrac02.at,
+       tests/extrac03.at, tests/extrac04.at, tests/extrac05.at,
+       tests/gzip.at, tests/ignfail.at, tests/incremental.at,
+       tests/link01.at, tests/listed01.at, tests/listed02.at,
+       tests/long01.at, tests/longv7.at, tests/multiv01.at,
+       tests/multiv02.at, tests/multiv03.at, tests/multiv04.at,
+       tests/old.at, tests/options.at, tests/options02.at, tests/pipe.at,
+       tests/recurse.at, tests/same-order01.at, tests/same-order02.at,
+       tests/shortrec.at, tests/sparse01.at, tests/sparse02.at,
+       tests/testsuite.at, tests/truncate.at, tests/version.at,
+       tests/volume.at, tests/star/gtarfail.at, tests/star/gtarfail2.at,
+       tests/star/multi-fail.at, tests/star/pax-big-10g.at,
+       tests/star/quicktest.sh, tests/star/ustar-big-2g.at,
+       tests/star/ustar-big-8g.at:
+       Update FSF postal mail address.
+
+2005-05-12  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * NEWS: Updated
+       * THANKS: Updated
+       * bootstrap: Install files from paxutils/doc
+       * doc/Makefile.am (tar_TEXINFOS): Add genfile.texi
+       * doc/tar.texi (Genfile): New appendix
+       * src/compare.c (diff_file): diff_handle was not initialized
+       * src/create.c (dump_regular_file): Correctly pad archive members
+       that shrunk during archiving. Repored by Frank Heckenbach.
+       * src/extract.c (file_newer_p): Return false if file does not
+       exist
+       (prepare_to_extract): Correct warning wording.
+       * tests/truncate.at: New test case
+       * tests/Makefile.am: Add truncate.at
+       * tests/testsuite.at: Likewise.
+
+       * doc/.cvsignore: Updated
+       * lib/.cvsignore: Updated
+       * tests/.cvsignore: Updated
+
+2005-05-02  Paul Eggert  <eggert@cs.ucla.edu>
+
+       * tests/multivol04.at: Tell awk to read from /dev/null.
+
+       Adjust to recent gnulib changes.
+       * lib/.cvsignore: Add dup-safer.c, fd-safer.c, unistd-safer.h.
+       * src/common.h (initial_umask): New var.
+       * src/create.c (start_ueader): Use it, and adjust to new modechange
+       API.
+       (hash_link): unsigned -> size_t parameters and result.
+       * src/incremen.c (hash_directory): Likewise.
+       * src/names.c (hash_string_hasher): Likewise.
+       * src/tar.c (parse_opt): Set it, and adjust to new modechange API.
+
+2005-04-19  Sergey Poznyakoff  <gray@Mirddin.farlep.net>
+
+       * tests/Makefile.am: Add shortrec.at.
+
 2005-04-18  Paul Eggert  <eggert@cs.ucla.edu>
 
        * src/buffer.c (reading_from_pipe): Remove.  All uses removed.
@@ -6150,8 +6403,8 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with GNU tar; see the file COPYING.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.
 \f
 Local Variables:
 mode: change-log
This page took 0.027966 seconds and 4 git commands to generate.