Update to 1.25, which mostly brings miscellaneous bug fixes.
This commit is contained in:
parent
50fd51edcb
commit
1cb39c944d
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=265098
@ -6,8 +6,7 @@
|
||||
#
|
||||
|
||||
PORTNAME= tar
|
||||
PORTVERSION= 1.23
|
||||
PORTREVISION= 3
|
||||
PORTVERSION= 1.25
|
||||
CATEGORIES= archivers sysutils
|
||||
MASTER_SITES= ${MASTER_SITE_GNU}
|
||||
MASTER_SITE_SUBDIR= ${PORTNAME}
|
||||
@ -21,8 +20,7 @@ COMMENT= GNU version of the traditional tape archiver
|
||||
|
||||
INFO= tar
|
||||
|
||||
USE_AUTOTOOLS= autoconf:268:env
|
||||
USE_BZIP2= yes
|
||||
USE_XZ= yes
|
||||
USE_ICONV= yes
|
||||
GNU_CONFIGURE= yes
|
||||
MAKE_JOBS_SAFE= yes
|
||||
|
@ -1,3 +1,2 @@
|
||||
MD5 (tar-1.23.tar.bz2) = 41e2ca4b924ec7860e51b43ad06cdb7e
|
||||
SHA256 (tar-1.23.tar.bz2) = c9328372db62fbb1d94c9e4e3cefc961111af46de47085b635359c00a0eebe36
|
||||
SIZE (tar-1.23.tar.bz2) = 2189324
|
||||
SHA256 (tar-1.25.tar.xz) = 81230b829e2acea2fcd4c686b15f6a77d961871d0d72b961bbebcbd65e04d04c
|
||||
SIZE (tar-1.25.tar.xz) = 1767776
|
||||
|
@ -1,16 +0,0 @@
|
||||
$FreeBSD$
|
||||
|
||||
7.x up to 7.3 lacks the fdopendir() prototype in <dirent.h>.
|
||||
|
||||
--- gnu/dirent.in.h.orig 2010-03-29 17:48:45.000000000 +0200
|
||||
+++ gnu/dirent.in.h 2010-03-29 17:49:00.000000000 +0200
|
||||
@@ -79,9 +79,7 @@ _GL_WARN_ON_USE (dirfd, "dirfd is unport
|
||||
_GL_FUNCDECL_RPL (fdopendir, DIR *, (int fd));
|
||||
_GL_CXXALIAS_RPL (fdopendir, DIR *, (int fd));
|
||||
# else
|
||||
-# if !@HAVE_FDOPENDIR@
|
||||
_GL_FUNCDECL_SYS (fdopendir, DIR *, (int fd));
|
||||
-# endif
|
||||
_GL_CXXALIAS_SYS (fdopendir, DIR *, (int fd));
|
||||
# endif
|
||||
_GL_CXXALIASWARN (fdopendir);
|
@ -1,159 +1,14 @@
|
||||
$FreeBSD$
|
||||
http://git.savannah.gnu.org/cgit/tar.git/commit/?id=b60e56fdb6fd8d82a1f92a4fa7781d9a3184dce1
|
||||
|
||||
--- src/extract.c.orig 2010-01-26 12:28:09.000000000 +0100
|
||||
+++ src/extract.c 2010-06-11 20:54:04.000000000 +0200
|
||||
@@ -888,12 +888,22 @@ create_placeholder_file (char *file_name
|
||||
struct stat st;
|
||||
|
||||
while ((fd = open (file_name, O_WRONLY | O_CREAT | O_EXCL, 0)) < 0)
|
||||
- if (! maybe_recoverable (file_name, interdir_made))
|
||||
- break;
|
||||
+ {
|
||||
+ switch (maybe_recoverable (file_name, interdir_made))
|
||||
+ {
|
||||
+ case RECOVER_OK:
|
||||
+ continue;
|
||||
+
|
||||
+ case RECOVER_SKIP:
|
||||
+ return 0;
|
||||
+
|
||||
+ case RECOVER_NO:
|
||||
+ open_error (file_name);
|
||||
+ return -1;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
- if (fd < 0)
|
||||
- open_error (file_name);
|
||||
- else if (fstat (fd, &st) != 0)
|
||||
+ if (fstat (fd, &st) != 0)
|
||||
FreeBSD produces errno == EMLINK for open("symlink", O_NOFOLLOW|...).
|
||||
|
||||
--- src/extract.c.orig 2010-11-23 16:56:47.000000000 +0100
|
||||
+++ src/extract.c 2010-11-23 16:57:04.000000000 +0100
|
||||
@@ -609,6 +609,7 @@ maybe_recoverable (char *file_name, bool
|
||||
switch (e)
|
||||
{
|
||||
stat_error (file_name);
|
||||
close (fd);
|
||||
@@ -956,7 +966,8 @@ extract_link (char *file_name, int typef
|
||||
{
|
||||
int interdir_made = 0;
|
||||
char const *link_name;
|
||||
-
|
||||
+ int rc;
|
||||
+
|
||||
link_name = current_stat_info.link_name;
|
||||
|
||||
if (! absolute_names_option && contains_dot_dot (link_name))
|
||||
@@ -996,8 +1007,10 @@ extract_link (char *file_name, int typef
|
||||
|
||||
errno = e;
|
||||
}
|
||||
- while (maybe_recoverable (file_name, &interdir_made));
|
||||
+ while ((rc = maybe_recoverable (file_name, &interdir_made)) == RECOVER_OK);
|
||||
|
||||
+ if (rc == RECOVER_SKIP)
|
||||
+ return 0;
|
||||
if (!(incremental_option && errno == EEXIST))
|
||||
{
|
||||
link_error (link_name, file_name);
|
||||
@@ -1010,7 +1023,6 @@ static int
|
||||
extract_symlink (char *file_name, int typeflag)
|
||||
{
|
||||
#ifdef HAVE_SYMLINK
|
||||
- int status;
|
||||
int interdir_made = 0;
|
||||
|
||||
if (! absolute_names_option
|
||||
@@ -1018,15 +1030,22 @@ extract_symlink (char *file_name, int ty
|
||||
|| contains_dot_dot (current_stat_info.link_name)))
|
||||
return create_placeholder_file (file_name, true, &interdir_made);
|
||||
|
||||
- while ((status = symlink (current_stat_info.link_name, file_name)))
|
||||
- if (!maybe_recoverable (file_name, &interdir_made))
|
||||
- break;
|
||||
-
|
||||
- if (status == 0)
|
||||
- set_stat (file_name, ¤t_stat_info, NULL, 0, 0, SYMTYPE);
|
||||
- else
|
||||
- symlink_error (current_stat_info.link_name, file_name);
|
||||
- return status;
|
||||
+ while (symlink (current_stat_info.link_name, file_name))
|
||||
+ switch (maybe_recoverable (file_name, &interdir_made))
|
||||
+ {
|
||||
+ case RECOVER_OK:
|
||||
+ continue;
|
||||
+
|
||||
+ case RECOVER_SKIP:
|
||||
+ return 0;
|
||||
+
|
||||
+ case RECOVER_NO:
|
||||
+ symlink_error (current_stat_info.link_name, file_name);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ set_stat (file_name, ¤t_stat_info, NULL, 0, 0, SYMTYPE);
|
||||
+ return 0;
|
||||
|
||||
#else
|
||||
static int warned_once;
|
||||
@@ -1052,16 +1071,23 @@ extract_node (char *file_name, int typef
|
||||
mode_t invert_permissions =
|
||||
0 < same_owner_option ? mode & (S_IRWXG | S_IRWXO) : 0;
|
||||
|
||||
- do
|
||||
- status = mknod (file_name, mode ^ invert_permissions,
|
||||
- current_stat_info.stat.st_rdev);
|
||||
- while (status && maybe_recoverable (file_name, &interdir_made));
|
||||
+ while (mknod (file_name, mode ^ invert_permissions,
|
||||
+ current_stat_info.stat.st_rdev))
|
||||
+ switch (maybe_recoverable (file_name, &interdir_made))
|
||||
+ {
|
||||
+ case RECOVER_OK:
|
||||
+ continue;
|
||||
+
|
||||
+ case RECOVER_SKIP:
|
||||
+ return 0;
|
||||
+
|
||||
+ case RECOVER_NO:
|
||||
+ mknod_error (file_name);
|
||||
+ return -1;
|
||||
+ }
|
||||
|
||||
- if (status != 0)
|
||||
- mknod_error (file_name);
|
||||
- else
|
||||
- set_stat (file_name, ¤t_stat_info, NULL, invert_permissions,
|
||||
- ARCHIVED_PERMSTATUS, typeflag);
|
||||
+ set_stat (file_name, ¤t_stat_info, NULL, invert_permissions,
|
||||
+ ARCHIVED_PERMSTATUS, typeflag);
|
||||
return status;
|
||||
}
|
||||
#endif
|
||||
@@ -1077,15 +1103,22 @@ extract_fifo (char *file_name, int typef
|
||||
0 < same_owner_option ? mode & (S_IRWXG | S_IRWXO) : 0;
|
||||
|
||||
while ((status = mkfifo (file_name, mode)) != 0)
|
||||
- if (!maybe_recoverable (file_name, &interdir_made))
|
||||
- break;
|
||||
+ switch (maybe_recoverable (file_name, &interdir_made))
|
||||
+ {
|
||||
+ case RECOVER_OK:
|
||||
+ continue;
|
||||
+
|
||||
+ case RECOVER_SKIP:
|
||||
+ return 0;
|
||||
+
|
||||
+ case RECOVER_NO:
|
||||
+ mkfifo_error (file_name);
|
||||
+ return -1;
|
||||
+ }
|
||||
|
||||
- if (status == 0)
|
||||
- set_stat (file_name, ¤t_stat_info, NULL, invert_permissions,
|
||||
- ARCHIVED_PERMSTATUS, typeflag);
|
||||
- else
|
||||
- mkfifo_error (file_name);
|
||||
- return status;
|
||||
+ set_stat (file_name, ¤t_stat_info, NULL, invert_permissions,
|
||||
+ ARCHIVED_PERMSTATUS, typeflag);
|
||||
+ return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
case ELOOP:
|
||||
+ case EMLINK:
|
||||
if (! regular
|
||||
|| old_files_option != OVERWRITE_OLD_FILES || dereference_option)
|
||||
break;
|
||||
|
@ -1,14 +0,0 @@
|
||||
$FreeBSD$
|
||||
|
||||
Fix an instance of use-after-free(), from upstream.
|
||||
|
||||
--- src/names.c.orig 2010-03-27 21:57:39.000000000 +0100
|
||||
+++ src/names.c 2010-03-27 21:58:02.000000000 +0100
|
||||
@@ -950,6 +950,7 @@ collect_and_sort_names (void)
|
||||
{
|
||||
if (p->child)
|
||||
rebase_child_list (p->child, name);
|
||||
+ hash_delete (nametab, name);
|
||||
/* FIXME: remove_directory (p->caname); ? */
|
||||
remname (p);
|
||||
free_name (p);
|
@ -1,15 +0,0 @@
|
||||
|
||||
$FreeBSD: /tmp/pcvs/ports/archivers/gtar/files/Attic/patch-tests_gzip.at,v 1.2 2010-03-29 17:36:25 naddy Exp $
|
||||
|
||||
--- tests/gzip.at.orig 2010-01-26 12:30:21.000000000 +0100
|
||||
+++ tests/gzip.at 2010-03-17 21:41:11.000000000 +0100
|
||||
@@ -31,8 +31,7 @@ tar xfvz /dev/null
|
||||
],
|
||||
[2],
|
||||
[],
|
||||
-[
|
||||
-gzip: stdin: unexpected end of file
|
||||
+[gzip: (stdin): unexpected end of file
|
||||
tar: Child returned status 1
|
||||
tar: Error is not recoverable: exiting now
|
||||
],
|
@ -2,6 +2,7 @@
|
||||
bin/gtar
|
||||
libexec/grmt
|
||||
%%NLS%%share/locale/bg/LC_MESSAGES/tar.mo
|
||||
%%NLS%%share/locale/ca/LC_MESSAGES/tar.mo
|
||||
%%NLS%%share/locale/cs/LC_MESSAGES/tar.mo
|
||||
%%NLS%%share/locale/da/LC_MESSAGES/tar.mo
|
||||
%%NLS%%share/locale/de/LC_MESSAGES/tar.mo
|
||||
|
Loading…
Reference in New Issue
Block a user