OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall Root: /v/openpkg/cvs Email: [EMAIL PROTECTED] Module: openpkg-src Date: 22-Oct-2006 11:48:41 Branch: HEAD Handle: 2006102210484000 Modified files: openpkg-src/tar tar.patch tar.spec Log: upgrading package: tar 1.15.1 -> 1.16 Summary: Revision Changes Path 1.14 +62 -210 openpkg-src/tar/tar.patch 1.54 +3 -3 openpkg-src/tar/tar.spec ____________________________________________________________________________ patch -p0 <<'@@ .' Index: openpkg-src/tar/tar.patch ============================================================================ $ cvs diff -u -r1.13 -r1.14 tar.patch --- openpkg-src/tar/tar.patch 3 Oct 2006 17:56:41 -0000 1.13 +++ openpkg-src/tar/tar.patch 22 Oct 2006 09:48:40 -0000 1.14 @@ -1,7 +1,7 @@ Index: lib/argp-help.c ---- lib/argp-help.c.orig 2004-10-04 11:36:16 +0200 -+++ lib/argp-help.c 2006-10-03 19:53:59 +0200 -@@ -532,8 +532,7 @@ +--- lib/argp-help.c.orig 2006-09-12 10:59:04 +0200 ++++ lib/argp-help.c 2006-10-22 11:35:12 +0200 +@@ -567,8 +567,7 @@ return val; } @@ -11,7 +11,7 @@ hol_entry_long_iterate (const struct hol_entry *entry, int (*func)(const struct argp_option *opt, const struct argp_option *real, -@@ -557,7 +556,7 @@ +@@ -592,7 +591,7 @@ } /* Iterator that returns true for the first short option. */ @@ -20,109 +20,80 @@ until_short (const struct argp_option *opt, const struct argp_option *real, const char *domain, void *cookie) { -Index: src/incremen.c ---- src/incremen.c.orig 2004-09-06 13:30:42 +0200 -+++ src/incremen.c 2004-12-20 19:55:06 +0100 -@@ -133,6 +133,8 @@ - if (! dirp) - { - savedir_error (dir_name); -+ errno = 1; -+ return; - } - errno = 0; - -Index: src/utf8.c ---- src/utf8.c.orig 2004-10-25 16:14:53 +0200 -+++ src/utf8.c 2004-12-20 19:54:25 +0100 -@@ -22,6 +22,9 @@ - #include "common.h" - #ifdef HAVE_ICONV_H - # include <iconv.h> -+#else -+# define iconv_t void * -+# define ICONV_CONST const - #endif - - #ifndef ICONV_CONST -Index: src/xheader.c ---- src/xheader.c.orig 2004-09-06 13:31:14 +0200 -+++ src/xheader.c 2004-12-20 19:54:25 +0100 -@@ -23,6 +23,7 @@ - #include <quotearg.h> - #include <stpcpy.h> - #include <xstrtol.h> -+#include <stpcpy.h> - - #include "common.h" - Index: rmt/rmt.c ---- rmt/rmt.c.orig 2004-09-06 15:49:41 +0200 -+++ rmt/rmt.c 2004-12-20 20:01:28 +0100 -@@ -38,6 +38,7 @@ - +--- rmt/rmt.c.orig 2006-09-27 10:54:46 +0200 ++++ rmt/rmt.c 2006-10-22 11:35:12 +0200 +@@ -43,6 +43,7 @@ + #include <obstack.h> #include <getopt.h> #include <sys/socket.h> +#include <locale.h> #ifndef EXIT_FAILURE # define EXIT_FAILURE 1 +Index: src/compare.c +--- src/compare.c.orig 2006-03-20 10:23:29 +0100 ++++ src/compare.c 2006-10-22 11:36:29 +0200 +@@ -295,7 +295,7 @@ + size_t len = strlen (current_stat_info.link_name); + char *linkbuf = alloca (len + 1); + +- int status = readlink (current_stat_info.file_name, linkbuf, len + 1); ++ int status = readlink (current_stat_info.file_name, linkbuf, len); + + if (status < 0) + { +Index: src/create.c +--- src/create.c.orig 2006-10-16 08:33:55 +0200 ++++ src/create.c 2006-10-22 11:36:18 +0200 +@@ -1600,7 +1600,7 @@ + if (linklen != st->stat.st_size || linklen + 1 == 0) + xalloc_die (); + buffer = (char *) alloca (linklen + 1); +- size = readlink (p, buffer, linklen + 1); ++ size = readlink (p, buffer, linklen); + if (size < 0) + { + readlink_diag (p); +Index: src/incremen.c +--- src/incremen.c.orig 2006-09-08 18:42:18 +0200 ++++ src/incremen.c 2006-10-22 11:43:46 +0200 +@@ -479,6 +479,7 @@ + children = CHANGED_CHILDREN; + but changed to: */ + free (name_buffer); ++ if (dirp) + free (dirp); + return NULL; + } Index: src/tar.c ---- src/tar.c.orig 2004-12-21 15:11:26 +0100 -+++ src/tar.c 2005-01-31 21:34:57 +0100 +--- src/tar.c.orig 2006-10-17 10:11:31 +0200 ++++ src/tar.c 2006-10-22 11:35:12 +0200 @@ -20,6 +20,7 @@ - 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include <system.h> +#include <locale.h> #include <fnmatch.h> - #include <argp.h> -@@ -617,9 +618,9 @@ - - switch (key) - { -- case 1: -+ case ARGP_KEY_ARG: - /* File name or non-parsed option, because of ARGP_IN_ORDER */ -- name_add (optarg); -+ name_add (arg); - args->input_files++; - break; - -Index: src/compare.c ---- src/compare.c.orig 2004-09-06 13:30:29 +0200 -+++ src/compare.c 2005-01-31 21:34:57 +0100 -@@ -327,7 +327,7 @@ - size_t len = strlen (current_stat_info.link_name); - char *linkbuf = alloca (len + 1); - -- status = readlink (current_stat_info.file_name, linkbuf, len + 1); -+ status = readlink (current_stat_info.file_name, linkbuf, len); + #include <getline.h> +Index: src/utf8.c +--- src/utf8.c.orig 2005-05-18 14:23:49 +0200 ++++ src/utf8.c 2006-10-22 11:35:12 +0200 +@@ -22,6 +22,9 @@ + #include "common.h" + #ifdef HAVE_ICONV_H + # include <iconv.h> ++#else ++# define iconv_t void * ++# define ICONV_CONST const + #endif - if (status < 0) - { -Index: src/create.c ---- src/create.c.orig 2004-10-04 11:21:31 +0200 -+++ src/create.c 2005-01-31 21:34:57 +0100 -@@ -1482,7 +1482,7 @@ - if (linklen != st->stat.st_size || linklen + 1 == 0) - xalloc_die (); - buffer = (char *) alloca (linklen + 1); -- size = readlink (p, buffer, linklen + 1); -+ size = readlink (p, buffer, linklen); - if (size < 0) - { - readlink_diag (p); - ------------------------------------------------------------------------------ - -Security Fixes (CVE-2006-0300) - + #ifndef ICONV_CONST Index: src/xheader.c ---- src/xheader.c.orig 2006-06-10 08:58:04 +0200 -+++ src/xheader.c 2006-06-10 09:01:31 +0200 -@@ -33,6 +33,10 @@ +--- src/xheader.c.orig 2006-10-22 11:35:12 +0200 ++++ src/xheader.c 2006-10-22 11:40:55 +0200 +@@ -28,6 +28,10 @@ #include <fnmatch.h> @@ -133,122 +104,3 @@ static bool xheader_protected_pattern_p (char const *pattern); static bool xheader_protected_keyword_p (char const *keyword); static void xheader_set_single_keyword (char *) __attribute__ ((noreturn)); -@@ -784,6 +788,32 @@ - xheader_print (xhdr, keyword, sbuf); - } - -+static bool -+decode_num (uintmax_t *num, char const *arg, uintmax_t maxval, -+ char const *keyword) -+{ -+ uintmax_t u; -+ char *arg_lim; -+ -+ if (! (ISDIGIT (*arg) -+ && (errno = 0, xstrtoumax (arg, &arg_lim, 10, &u, ""), !*arg_lim))) -+ { -+ ERROR ((0, 0, _("Malformed extended header: invalid %s=%s"), -+ keyword, arg)); -+ return false; -+ } -+ -+ if (! (u <= maxval && errno != ERANGE)) -+ { -+ ERROR ((0, 0, _("Extended header %s=%s is out of range"), -+ keyword, arg)); -+ return false; -+ } -+ -+ *num = u; -+ return true; -+} -+ - static void - dummy_coder (struct tar_stat_info const *st __attribute__ ((unused)), - char const *keyword __attribute__ ((unused)), -@@ -822,7 +852,7 @@ - gid_decoder (struct tar_stat_info *st, char const *arg) - { - uintmax_t u; -- if (xstrtoumax (arg, NULL, 10, &u, "") == LONGINT_OK) -+ if (decode_num (&u, arg, TYPE_MAXIMUM (gid_t), "gid")) - st->stat.st_gid = u; - } - -@@ -904,7 +934,7 @@ - size_decoder (struct tar_stat_info *st, char const *arg) - { - uintmax_t u; -- if (xstrtoumax (arg, NULL, 10, &u, "") == LONGINT_OK) -+ if (decode_num (&u, arg, TYPE_MAXIMUM (off_t), "size")) - st->archive_file_size = st->stat.st_size = u; - } - -@@ -919,7 +949,7 @@ - uid_decoder (struct tar_stat_info *st, char const *arg) - { - uintmax_t u; -- if (xstrtoumax (arg, NULL, 10, &u, "") == LONGINT_OK) -+ if (decode_num (&u, arg, TYPE_MAXIMUM (uid_t), "uid")) - st->stat.st_uid = u; - } - -@@ -947,7 +977,7 @@ - sparse_size_decoder (struct tar_stat_info *st, char const *arg) - { - uintmax_t u; -- if (xstrtoumax (arg, NULL, 10, &u, "") == LONGINT_OK) -+ if (decode_num (&u, arg, TYPE_MAXIMUM (off_t), "GNU.sparse.size")) - st->stat.st_size = u; - } - -@@ -963,10 +993,10 @@ - sparse_numblocks_decoder (struct tar_stat_info *st, char const *arg) - { - uintmax_t u; -- if (xstrtoumax (arg, NULL, 10, &u, "") == LONGINT_OK) -+ if (decode_num (&u, arg, SIZE_MAX, "GNU.sparse.numblocks")) - { - st->sparse_map_size = u; -- st->sparse_map = calloc(st->sparse_map_size, sizeof(st->sparse_map[0])); -+ st->sparse_map = xcalloc (u, sizeof st->sparse_map[0]); - st->sparse_map_avail = 0; - } - } -@@ -983,8 +1013,14 @@ - sparse_offset_decoder (struct tar_stat_info *st, char const *arg) - { - uintmax_t u; -- if (xstrtoumax (arg, NULL, 10, &u, "") == LONGINT_OK) -+ if (decode_num (&u, arg, TYPE_MAXIMUM (off_t), "GNU.sparse.offset")) -+ { -+ if (st->sparse_map_avail < st->sparse_map_size) - st->sparse_map[st->sparse_map_avail].offset = u; -+ else -+ ERROR ((0, 0, _("Malformed extended header: excess %s=%s"), -+ "GNU.sparse.offset", arg)); -+ } - } - - static void -@@ -999,15 +1035,13 @@ - sparse_numbytes_decoder (struct tar_stat_info *st, char const *arg) - { - uintmax_t u; -- if (xstrtoumax (arg, NULL, 10, &u, "") == LONGINT_OK) -+ if (decode_num (&u, arg, SIZE_MAX, "GNU.sparse.numbytes")) - { - if (st->sparse_map_avail == st->sparse_map_size) -- { -- st->sparse_map_size *= 2; -- st->sparse_map = xrealloc (st->sparse_map, -- st->sparse_map_size -- * sizeof st->sparse_map[0]); -- } -+ st->sparse_map = x2nrealloc (st->sparse_map, -+ &st->sparse_map_size, -+ sizeof st->sparse_map[0]); -+ - st->sparse_map[st->sparse_map_avail++].numbytes = u; - } - } @@ . patch -p0 <<'@@ .' Index: openpkg-src/tar/tar.spec ============================================================================ $ cvs diff -u -r1.53 -r1.54 tar.spec --- openpkg-src/tar/tar.spec 13 Oct 2006 17:34:44 -0000 1.53 +++ openpkg-src/tar/tar.spec 22 Oct 2006 09:48:40 -0000 1.54 @@ -24,7 +24,7 @@ # package information Name: tar -Summary: Un-/Packing of TAR Archive Files +Summary: Management of TAR Archive Format Files URL: http://www.gnu.org/software/tar/ Vendor: Free Software Foundation Packager: OpenPKG Foundation e.V. @@ -32,8 +32,8 @@ Class: CORE Group: Archiver License: GPL -Version: 1.15.1 -Release: 20061013 +Version: 1.16 +Release: 20061022 # list of sources Source0: ftp://ftp.gnu.org/gnu/tar/tar-%{version}.tar.gz @@ . ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List openpkg-cvs@openpkg.org