summaryrefslogtreecommitdiff
path: root/archivers/gtar-base/patches/patch-ai
diff options
context:
space:
mode:
Diffstat (limited to 'archivers/gtar-base/patches/patch-ai')
-rw-r--r--archivers/gtar-base/patches/patch-ai134
1 files changed, 0 insertions, 134 deletions
diff --git a/archivers/gtar-base/patches/patch-ai b/archivers/gtar-base/patches/patch-ai
deleted file mode 100644
index 5ea30a93ec0..00000000000
--- a/archivers/gtar-base/patches/patch-ai
+++ /dev/null
@@ -1,134 +0,0 @@
-$NetBSD: patch-ai,v 1.2 2006/11/27 22:05:34 tv Exp $
-
---- src/xheader.c.orig 2004-09-06 07:31:14.000000000 -0400
-+++ src/xheader.c
-@@ -24,6 +24,10 @@
- #include <stpcpy.h>
- #include <xstrtol.h>
-
-+#ifndef SIZE_MAX
-+# define SIZE_MAX ((size_t) -1)
-+#endif
-+
- #include "common.h"
-
- #define obstack_chunk_alloc xmalloc
-@@ -783,6 +787,32 @@ code_num (uintmax_t value, char const *k
- 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, u = strtoumax (arg, &arg_lim, 10), !*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)),
-@@ -821,7 +851,7 @@ static void
- 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;
- }
-
-@@ -903,7 +933,7 @@ static void
- 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;
- }
-
-@@ -918,7 +948,7 @@ static void
- 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;
- }
-
-@@ -946,7 +976,7 @@ static void
- 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;
- }
-
-@@ -962,10 +992,10 @@ static void
- 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;
- }
- }
-@@ -982,8 +1012,14 @@ static void
- 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
-@@ -998,15 +1034,13 @@ static void
- 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;
- }
- }