Initialize for tar
This commit is contained in:
commit
09b05a0b95
23 changed files with 2249 additions and 0 deletions
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
tar-1.34.tar.xz
|
1
.tar.metadata
Normal file
1
.tar.metadata
Normal file
|
@ -0,0 +1 @@
|
|||
8fb8b6de78fd296285453d378e1e939fabbc4ef148b8228e917df76f8949b745 tar-1.34.tar.xz
|
39
add_readme-tests.patch
Normal file
39
add_readme-tests.patch
Normal file
|
@ -0,0 +1,39 @@
|
|||
Index: tar-1.33/Makefile.in
|
||||
===================================================================
|
||||
--- tar-1.33.orig/Makefile.in
|
||||
+++ tar-1.33/Makefile.in
|
||||
@@ -348,6 +348,7 @@ am__DIST_COMMON = $(srcdir)/Make.rules $
|
||||
$(top_srcdir)/build-aux/install-sh \
|
||||
$(top_srcdir)/build-aux/missing ABOUT-NLS AUTHORS COPYING \
|
||||
ChangeLog INSTALL NEWS README THANKS TODO build-aux/ar-lib \
|
||||
+ README-tests \
|
||||
build-aux/compile build-aux/config.guess \
|
||||
build-aux/config.rpath build-aux/config.sub build-aux/depcomp \
|
||||
build-aux/install-sh build-aux/mdate-sh build-aux/missing \
|
||||
Index: tar-1.33/README-tests
|
||||
===================================================================
|
||||
--- /dev/null
|
||||
+++ tar-1.33/README-tests
|
||||
@@ -0,0 +1,22 @@
|
||||
+Subpackage tar-tests
|
||||
+====================
|
||||
+
|
||||
+The tar-tests package contains the testsuite which is included in tar sources.
|
||||
+The testsuite is normally run during make phase (make check) and is also
|
||||
+automatically run when the tar rpm is being build (in %check section of spec
|
||||
+file).
|
||||
+
|
||||
+Normally, there is no reason to need the tar-tests package. It can however be
|
||||
+used to verify, that tar functions properly in an installed system (e.g. to
|
||||
+find issues in tar's dependencies, problems with incompatible libraries, etc.).
|
||||
+
|
||||
+Testsuite is installed into /var/lib/tests/tar
|
||||
+
|
||||
+To run the testsuite:
|
||||
+
|
||||
+cd /var/lib/tests/tar
|
||||
+./testsuite --help # show options
|
||||
+
|
||||
+# needed for genfile binary used in tests
|
||||
+./testsuite AUTOTEST_PATH=/var/lib/tests/tar/bin [other options]
|
||||
+
|
71
bsc1200657.patch
Normal file
71
bsc1200657.patch
Normal file
|
@ -0,0 +1,71 @@
|
|||
From 79d1ac38c19faad64f0e993180bf1ad27f217072 Mon Sep 17 00:00:00 2001
|
||||
From: James Abbatiello <abbeyj@gmail.com>
|
||||
Date: Fri, 10 Jun 2022 18:25:13 -0700
|
||||
Subject: tar: fix race condition
|
||||
|
||||
Problem reported in:
|
||||
https://lists.gnu.org/r/bug-tar/2022-03/msg00000.html
|
||||
* src/extract.c (make_directories): Retry the file creation as
|
||||
long as the directory exists, regardless of whether tar itself
|
||||
created the directory.
|
||||
Copyright-paperwork-exempt: Yes
|
||||
---
|
||||
src/extract.c | 16 ++++++++--------
|
||||
1 file changed, 8 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/extract.c b/src/extract.c
|
||||
index 0753dec..fda4617 100644
|
||||
--- a/src/extract.c
|
||||
+++ b/src/extract.c
|
||||
@@ -638,10 +638,9 @@ fixup_delayed_set_stat (char const *src, char const *dst)
|
||||
|
||||
/* After a file/link/directory creation has failed due to ENOENT,
|
||||
create all required directories. Return zero if all the required
|
||||
- directories were created, nonzero (issuing a diagnostic) otherwise.
|
||||
- Set *INTERDIR_MADE if at least one directory was created. */
|
||||
+ directories were created, nonzero (issuing a diagnostic) otherwise. */
|
||||
static int
|
||||
-make_directories (char *file_name, bool *interdir_made)
|
||||
+make_directories (char *file_name)
|
||||
{
|
||||
char *cursor0 = file_name + FILE_SYSTEM_PREFIX_LEN (file_name);
|
||||
char *cursor; /* points into the file name */
|
||||
@@ -685,7 +684,6 @@ make_directories (char *file_name, bool *interdir_made)
|
||||
desired_mode, AT_SYMLINK_NOFOLLOW);
|
||||
|
||||
print_for_mkdir (file_name, cursor - file_name, desired_mode);
|
||||
- *interdir_made = true;
|
||||
parent_end = NULL;
|
||||
}
|
||||
else
|
||||
@@ -841,8 +839,11 @@ maybe_recoverable (char *file_name, bool regular, bool *interdir_made)
|
||||
|
||||
case ENOENT:
|
||||
/* Attempt creating missing intermediate directories. */
|
||||
- if (make_directories (file_name, interdir_made) == 0)
|
||||
- return RECOVER_OK;
|
||||
+ if (make_directories (file_name) == 0)
|
||||
+ {
|
||||
+ *interdir_made = true;
|
||||
+ return RECOVER_OK;
|
||||
+ }
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -1944,12 +1945,11 @@ rename_directory (char *src, char *dst)
|
||||
else
|
||||
{
|
||||
int e = errno;
|
||||
- bool interdir_made;
|
||||
|
||||
switch (e)
|
||||
{
|
||||
case ENOENT:
|
||||
- if (make_directories (dst, &interdir_made) == 0)
|
||||
+ if (make_directories (dst) == 0)
|
||||
{
|
||||
if (renameat (chdir_fd, src, chdir_fd, dst) == 0)
|
||||
return true;
|
||||
--
|
||||
cgit v1.1
|
||||
|
65
bsc1202436-1.patch
Normal file
65
bsc1202436-1.patch
Normal file
|
@ -0,0 +1,65 @@
|
|||
From edf38d13a47becec81b2c3a2b74f54771e1cbee4 Mon Sep 17 00:00:00 2001
|
||||
From: Sergey Poznyakoff <gray@gnu.org>
|
||||
Date: Sat, 11 Feb 2023 13:03:23 +0200
|
||||
Subject: Prevent dead loop in extract_file
|
||||
|
||||
* src/extract.c (maybe_recoverable): If make_directories indicates
|
||||
success, suppose some intermediate directories have been made, even
|
||||
if in fact they have not. That's necessary to avoid dead loops when
|
||||
maybe_recoverable is called with the same arguments again.
|
||||
---
|
||||
src/extract.c | 13 +++++++------
|
||||
1 file changed, 7 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/src/extract.c b/src/extract.c
|
||||
index 2d43947..aec5de6 100644
|
||||
--- a/src/extract.c
|
||||
+++ b/src/extract.c
|
||||
@@ -682,7 +682,7 @@ fixup_delayed_set_stat (char const *src, char const *dst)
|
||||
directories were created, nonzero (issuing a diagnostic) otherwise.
|
||||
Set *INTERDIR_MADE if at least one directory was created. */
|
||||
static int
|
||||
-make_directories (char *file_name, bool *interdir_made)
|
||||
+make_directories (char *file_name)
|
||||
{
|
||||
char *cursor0 = file_name + FILE_SYSTEM_PREFIX_LEN (file_name);
|
||||
char *cursor; /* points into the file name */
|
||||
@@ -726,7 +726,6 @@ make_directories (char *file_name, bool *interdir_made)
|
||||
desired_mode, AT_SYMLINK_NOFOLLOW);
|
||||
|
||||
print_for_mkdir (file_name, cursor - file_name, desired_mode);
|
||||
- *interdir_made = true;
|
||||
parent_end = NULL;
|
||||
}
|
||||
else
|
||||
@@ -882,8 +881,11 @@ maybe_recoverable (char *file_name, bool regular, bool *interdir_made)
|
||||
|
||||
case ENOENT:
|
||||
/* Attempt creating missing intermediate directories. */
|
||||
- if (make_directories (file_name, interdir_made) == 0)
|
||||
- return RECOVER_OK;
|
||||
+ if (make_directories (file_name) == 0)
|
||||
+ {
|
||||
+ *interdir_made = true;
|
||||
+ return RECOVER_OK;
|
||||
+ }
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -1985,12 +1987,11 @@ rename_directory (char *src, char *dst)
|
||||
else
|
||||
{
|
||||
int e = errno;
|
||||
- bool interdir_made;
|
||||
|
||||
switch (e)
|
||||
{
|
||||
case ENOENT:
|
||||
- if (make_directories (dst, &interdir_made) == 0)
|
||||
+ if (make_directories (dst) == 0)
|
||||
{
|
||||
if (renameat (chdir_fd, src, chdir_fd, dst) == 0)
|
||||
return true;
|
||||
--
|
||||
cgit v1.1
|
||||
|
47
bsc1202436-2.patch
Normal file
47
bsc1202436-2.patch
Normal file
|
@ -0,0 +1,47 @@
|
|||
From 5e8a915b16c5f06d2a16d98cdc2af666199caabb Mon Sep 17 00:00:00 2001
|
||||
From: Sergey Poznyakoff <gray@gnu.org>
|
||||
Date: Sat, 11 Feb 2023 14:21:05 +0200
|
||||
Subject: Changes in extended header decoder
|
||||
|
||||
* src/xheader.c (decode_time): Fix error detection.
|
||||
(raw_path_decoder): Ignore empty paths.
|
||||
---
|
||||
src/xheader.c | 15 ++++++++++++---
|
||||
1 file changed, 12 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/src/xheader.c b/src/xheader.c
|
||||
index 7ff216b..a195f3e 100644
|
||||
--- a/src/xheader.c
|
||||
+++ b/src/xheader.c
|
||||
@@ -1059,6 +1059,12 @@ decode_time (struct timespec *ts, char const *arg, char const *keyword)
|
||||
keyword, arg));
|
||||
return false;
|
||||
}
|
||||
+ if (*arg_lim)
|
||||
+ {
|
||||
+ ERROR ((0, 0, _("Malformed extended header: invalid %s=%s"),
|
||||
+ keyword, arg));
|
||||
+ return false;
|
||||
+ }
|
||||
|
||||
*ts = t;
|
||||
return true;
|
||||
@@ -1247,9 +1253,12 @@ path_coder (struct tar_stat_info const *st, char const *keyword,
|
||||
static void
|
||||
raw_path_decoder (struct tar_stat_info *st, char const *arg)
|
||||
{
|
||||
- decode_string (&st->orig_file_name, arg);
|
||||
- decode_string (&st->file_name, arg);
|
||||
- st->had_trailing_slash = strip_trailing_slashes (st->file_name);
|
||||
+ if (*arg)
|
||||
+ {
|
||||
+ decode_string (&st->orig_file_name, arg);
|
||||
+ decode_string (&st->file_name, arg);
|
||||
+ st->had_trailing_slash = strip_trailing_slashes (st->file_name);
|
||||
+ }
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
cgit v1.1
|
||||
|
14
bsc1202436.patch
Normal file
14
bsc1202436.patch
Normal file
|
@ -0,0 +1,14 @@
|
|||
diff --git a/src/extract.c b/src/extract.c
|
||||
index 37ab2956..b70b6c2f 100644
|
||||
--- a/src/extract.c
|
||||
+++ b/src/extract.c
|
||||
@@ -854,6 +854,9 @@ maybe_recoverable (char *file_name, bool regular, bool *interdir_made)
|
||||
case EEXIST:
|
||||
/* Remove an old file, if the options allow this. */
|
||||
|
||||
+ if (strlen(file_name) == 1 && *file_name == '.')
|
||||
+ return RECOVER_NO;
|
||||
+
|
||||
switch (old_files_option)
|
||||
{
|
||||
case SKIP_OLD_FILES:
|
31
fix-CVE-2022-48303.patch
Normal file
31
fix-CVE-2022-48303.patch
Normal file
|
@ -0,0 +1,31 @@
|
|||
From 1d530107a24d71e798727d7f0afa0833473d1074 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Matej=20Mu=C5=BEila?= <mmuzila@gmail.com>
|
||||
Date: Wed, 11 Jan 2023 08:55:58 +0100
|
||||
Subject: [PATCH] Fix savannah bug #62387
|
||||
|
||||
* src/list.c (from_header): Check for the end of field after leading byte
|
||||
(0x80 or 0xff) of base-256 encoded header value
|
||||
---
|
||||
src/list.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/src/list.c b/src/list.c
|
||||
index 9fafc425..bf41b581 100644
|
||||
--- a/src/list.c
|
||||
+++ b/src/list.c
|
||||
@@ -895,6 +895,12 @@ from_header (char const *where0, size_t digs, char const *type,
|
||||
<< (CHAR_BIT * sizeof (uintmax_t)
|
||||
- LG_256 - (LG_256 - 2)));
|
||||
value = (*where++ & ((1 << (LG_256 - 2)) - 1)) - signbit;
|
||||
+ if (where == lim)
|
||||
+ {
|
||||
+ if (type && !silent)
|
||||
+ ERROR ((0, 0, _("Archive base-256 value is invalid")));
|
||||
+ return -1;
|
||||
+ }
|
||||
for (;;)
|
||||
{
|
||||
value = (value << LG_256) + (unsigned char) *where++;
|
||||
--
|
||||
2.38.1
|
||||
|
60
fix-CVE-2023-39804.patch
Normal file
60
fix-CVE-2023-39804.patch
Normal file
|
@ -0,0 +1,60 @@
|
|||
From a339f05cd269013fa133d2f148d73f6f7d4247e4 Mon Sep 17 00:00:00 2001
|
||||
From: Sergey Poznyakoff <gray@gnu.org>
|
||||
Date: Sat, 28 Aug 2021 16:02:12 +0300
|
||||
Subject: Fix handling of extended header prefixes
|
||||
|
||||
* src/xheader.c (locate_handler): Recognize prefix keywords only
|
||||
when followed by a dot.
|
||||
(xattr_decoder): Use xmalloc/xstrdup instead of alloc
|
||||
---
|
||||
src/xheader.c | 17 +++++++++--------
|
||||
1 file changed, 9 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/src/xheader.c b/src/xheader.c
|
||||
index 4f8b2b2..3cd694d 100644
|
||||
--- a/src/xheader.c
|
||||
+++ b/src/xheader.c
|
||||
@@ -637,11 +637,11 @@ static struct xhdr_tab const *
|
||||
locate_handler (char const *keyword)
|
||||
{
|
||||
struct xhdr_tab const *p;
|
||||
-
|
||||
for (p = xhdr_tab; p->keyword; p++)
|
||||
if (p->prefix)
|
||||
{
|
||||
- if (strncmp (p->keyword, keyword, strlen(p->keyword)) == 0)
|
||||
+ size_t kwlen = strlen (p->keyword);
|
||||
+ if (keyword[kwlen] == '.' && strncmp (p->keyword, keyword, kwlen) == 0)
|
||||
return p;
|
||||
}
|
||||
else
|
||||
@@ -1716,19 +1716,20 @@ xattr_decoder (struct tar_stat_info *st,
|
||||
char const *keyword, char const *arg, size_t size)
|
||||
{
|
||||
char *xstr, *xkey;
|
||||
-
|
||||
+
|
||||
/* copy keyword */
|
||||
- size_t klen_raw = strlen (keyword);
|
||||
- xkey = alloca (klen_raw + 1);
|
||||
- memcpy (xkey, keyword, klen_raw + 1) /* including null-terminating */;
|
||||
+ xkey = xstrdup (keyword);
|
||||
|
||||
/* copy value */
|
||||
- xstr = alloca (size + 1);
|
||||
+ xstr = xmalloc (size + 1);
|
||||
memcpy (xstr, arg, size + 1); /* separator included, for GNU tar '\n' */;
|
||||
|
||||
xattr_decode_keyword (xkey);
|
||||
|
||||
- xheader_xattr_add (st, xkey + strlen("SCHILY.xattr."), xstr, size);
|
||||
+ xheader_xattr_add (st, xkey + strlen ("SCHILY.xattr."), xstr, size);
|
||||
+
|
||||
+ free (xkey);
|
||||
+ free (xstr);
|
||||
}
|
||||
|
||||
static void
|
||||
--
|
||||
cgit v1.1
|
||||
|
13
paxutils-rtapelib_mtget.patch
Normal file
13
paxutils-rtapelib_mtget.patch
Normal file
|
@ -0,0 +1,13 @@
|
|||
Index: cpio-2.11/lib/rtapelib.c
|
||||
===================================================================
|
||||
--- cpio-2.11.orig/lib/rtapelib.c 2013-07-23 13:18:27.119431054 +0200
|
||||
+++ cpio-2.11/lib/rtapelib.c 2013-07-23 13:19:35.728188104 +0200
|
||||
@@ -710,7 +710,7 @@ rmt_ioctl__ (int handle, int operation,
|
||||
|| (status = get_status (handle), status == -1))
|
||||
return -1;
|
||||
|
||||
- if (status > sizeof (struct mtop))
|
||||
+ if (status > sizeof (struct mtget))
|
||||
{
|
||||
errno = EOVERFLOW;
|
||||
return -1;
|
7
tar-1.34.tar.xz.sig
Normal file
7
tar-1.34.tar.xz.sig
Normal file
|
@ -0,0 +1,7 @@
|
|||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v1
|
||||
|
||||
iEYEABECAAYFAmAnuBMACgkQNgKwf1XQxzJIVgCfR5Z7coRkU2+aOW4KNhumGl/1
|
||||
jn4AoI9OuQPpyzZN1CIwejDYxbV7u59P
|
||||
=mfma
|
||||
-----END PGP SIGNATURE-----
|
12
tar-PIE.patch
Normal file
12
tar-PIE.patch
Normal file
|
@ -0,0 +1,12 @@
|
|||
Index: tar-1.34/tests/Makefile.am
|
||||
===================================================================
|
||||
--- tar-1.34.orig/tests/Makefile.am
|
||||
+++ tar-1.34/tests/Makefile.am
|
||||
@@ -317,6 +317,7 @@ installcheck-local: $(check_PROGRAMS)
|
||||
check_PROGRAMS = genfile checkseekhole ckmtime
|
||||
|
||||
genfile_SOURCES = genfile.c argcv.c argcv.h
|
||||
+genfile_LDFLAGS = -pie
|
||||
checkseekhole_SOURCES = checkseekhole.c
|
||||
|
||||
localedir = $(datadir)/locale
|
76
tar-avoid-overflow-in-symlinks-tests.patch
Normal file
76
tar-avoid-overflow-in-symlinks-tests.patch
Normal file
|
@ -0,0 +1,76 @@
|
|||
From d935dc7d1c150b3425dd43dc13a4dd2e2b712c26 Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Mon, 13 Jun 2022 17:02:54 -0700
|
||||
Subject: Avoid EOVERFLOW problems in some symlink tests
|
||||
|
||||
* src/extract.c (is_directory_link): New arg ST. Caller changed.
|
||||
(is_directory_link, open_output_file):
|
||||
Use readlinkat, not fstatat, to determine whether a string
|
||||
names a symlink. This avoids EOVERFLOW issues.
|
||||
(extract_dir): Avoid duplicate calls to fstatat when
|
||||
keep_directory_symlink_option && fstatat_flags == 0
|
||||
and the file is a symlink to an existing file.
|
||||
---
|
||||
src/extract.c | 28 ++++++++++++----------------
|
||||
1 file changed, 12 insertions(+), 16 deletions(-)
|
||||
|
||||
diff --git a/src/extract.c b/src/extract.c
|
||||
index fda4617..6d2543f 100644
|
||||
--- a/src/extract.c
|
||||
+++ b/src/extract.c
|
||||
@@ -982,18 +982,12 @@ apply_nonancestor_delayed_set_stat (char const *file_name, bool after_links)
|
||||
|
||||
|
||||
static bool
|
||||
-is_directory_link (const char *file_name)
|
||||
+is_directory_link (char const *file_name, struct stat *st)
|
||||
{
|
||||
- struct stat st;
|
||||
- int e = errno;
|
||||
- int res;
|
||||
-
|
||||
- res = (fstatat (chdir_fd, file_name, &st, AT_SYMLINK_NOFOLLOW) == 0 &&
|
||||
- S_ISLNK (st.st_mode) &&
|
||||
- fstatat (chdir_fd, file_name, &st, 0) == 0 &&
|
||||
- S_ISDIR (st.st_mode));
|
||||
- errno = e;
|
||||
- return res;
|
||||
+ char buf[1];
|
||||
+ return (0 <= readlinkat (chdir_fd, file_name, buf, sizeof buf)
|
||||
+ && fstatat (chdir_fd, file_name, st, 0) == 0
|
||||
+ && S_ISDIR (st->st_mode));
|
||||
}
|
||||
|
||||
/* Given struct stat of a directory (or directory member) whose ownership
|
||||
@@ -1066,11 +1060,14 @@ extract_dir (char *file_name, int typeflag)
|
||||
|| old_files_option == OVERWRITE_OLD_FILES))
|
||||
{
|
||||
struct stat st;
|
||||
+ st.st_mode = 0;
|
||||
|
||||
- if (keep_directory_symlink_option && is_directory_link (file_name))
|
||||
+ if (keep_directory_symlink_option
|
||||
+ && is_directory_link (file_name, &st))
|
||||
return 0;
|
||||
|
||||
- if (deref_stat (file_name, &st) == 0)
|
||||
+ if ((st.st_mode != 0 && fstatat_flags == 0)
|
||||
+ || deref_stat (file_name, &st) == 0)
|
||||
{
|
||||
current_mode = st.st_mode;
|
||||
current_mode_mask = ALL_MODE_BITS;
|
||||
@@ -1178,9 +1175,8 @@ open_output_file (char const *file_name, int typeflag, mode_t mode,
|
||||
if (! HAVE_WORKING_O_NOFOLLOW
|
||||
&& overwriting_old_files && ! dereference_option)
|
||||
{
|
||||
- struct stat st;
|
||||
- if (fstatat (chdir_fd, file_name, &st, AT_SYMLINK_NOFOLLOW) == 0
|
||||
- && S_ISLNK (st.st_mode))
|
||||
+ char buf[1];
|
||||
+ if (0 <= readlinkat (chdir_fd, file_name, buf, sizeof buf))
|
||||
{
|
||||
errno = ELOOP;
|
||||
return -1;
|
||||
--
|
||||
cgit v1.1
|
||||
|
25
tar-backup-spec-fix-paths.patch
Normal file
25
tar-backup-spec-fix-paths.patch
Normal file
|
@ -0,0 +1,25 @@
|
|||
Index: tar-1.29/scripts/backup-specs
|
||||
===================================================================
|
||||
--- tar-1.29.orig/scripts/backup-specs
|
||||
+++ tar-1.29/scripts/backup-specs
|
||||
@@ -6,17 +6,17 @@
|
||||
ADMINISTRATOR="root@localhost"
|
||||
|
||||
# (Optional) Path to tar binary.
|
||||
-TAR=/bin/tar
|
||||
+TAR=/usr/bin/tar
|
||||
|
||||
# (Optional) Path to rsh binary or its equivalent. You may wish to
|
||||
# set it to ssh as shown in the example below, to improve security.
|
||||
# In this case you will have to use public key authentication.
|
||||
-RSH=/usr/local/bin/ssh
|
||||
+RSH=/usr/bin/ssh
|
||||
|
||||
# (Optional) Path to rsh binary on remote mashines. This will be
|
||||
# passed via --rsh-command option to the remote invocation of
|
||||
# tar
|
||||
-RSH_COMMAND=/usr/local/bin/ssh
|
||||
+RSH_COMMAND=/usr/bin/ssh
|
||||
|
||||
# Name of temporary file to hold volume numbers. This needs to be accessible
|
||||
# by all the machines which have filesystems to be dumped.
|
187
tar-fix-extract-unlink.patch
Normal file
187
tar-fix-extract-unlink.patch
Normal file
|
@ -0,0 +1,187 @@
|
|||
From 17debecd7300e94f590b8ce167a8c0735cb6d57d Mon Sep 17 00:00:00 2001
|
||||
From: Sergey Poznyakoff <gray@gnu.org>
|
||||
Date: Sat, 22 Oct 2022 12:06:45 +0300
|
||||
Subject: Fix savannah bug #63123
|
||||
|
||||
The bug was introduced by commit 79d1ac38c1, which didn't take into
|
||||
account all the consequences of returning RECOVER_OK on EEXIST, in
|
||||
particular interactions with the delayed_set_stat logic.
|
||||
|
||||
The commit 79d1ac38c1 is reverted (the bug it was intended to fix
|
||||
was actually fixed by 79a442d7b0). Instead:
|
||||
|
||||
* src/extract.c (maybe_recoverable): Don't call maybe_recoverable
|
||||
if EEXIST is reported when UNLINK_FIRST_OLD_FILES option is set.
|
||||
---
|
||||
src/extract.c | 108 +++++++++++++++++++++++++++++++---------------------------
|
||||
1 file changed, 58 insertions(+), 50 deletions(-)
|
||||
|
||||
diff --git a/src/extract.c b/src/extract.c
|
||||
index 78de47f..37ab295 100644
|
||||
--- a/src/extract.c
|
||||
+++ b/src/extract.c
|
||||
@@ -679,9 +679,10 @@ fixup_delayed_set_stat (char const *src, char const *dst)
|
||||
|
||||
/* After a file/link/directory creation has failed due to ENOENT,
|
||||
create all required directories. Return zero if all the required
|
||||
- directories were created, nonzero (issuing a diagnostic) otherwise. */
|
||||
+ directories were created, nonzero (issuing a diagnostic) otherwise.
|
||||
+ Set *INTERDIR_MADE if at least one directory was created. */
|
||||
static int
|
||||
-make_directories (char *file_name)
|
||||
+make_directories (char *file_name, bool *interdir_made)
|
||||
{
|
||||
char *cursor0 = file_name + FILE_SYSTEM_PREFIX_LEN (file_name);
|
||||
char *cursor; /* points into the file name */
|
||||
@@ -725,6 +726,7 @@ make_directories (char *file_name)
|
||||
desired_mode, AT_SYMLINK_NOFOLLOW);
|
||||
|
||||
print_for_mkdir (file_name, cursor - file_name, desired_mode);
|
||||
+ *interdir_made = true;
|
||||
parent_end = NULL;
|
||||
}
|
||||
else
|
||||
@@ -879,12 +881,9 @@ maybe_recoverable (char *file_name, bool regular, bool *interdir_made)
|
||||
FALLTHROUGH;
|
||||
|
||||
case ENOENT:
|
||||
- /* Attempt creating missing intermediate directories. */
|
||||
- if (make_directories (file_name) == 0)
|
||||
- {
|
||||
- *interdir_made = true;
|
||||
- return RECOVER_OK;
|
||||
- }
|
||||
+ /* Attempt creating missing intermediate directories. */
|
||||
+ if (make_directories (file_name, interdir_made) == 0)
|
||||
+ return RECOVER_OK;
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -1072,61 +1071,69 @@ extract_dir (char *file_name, int typeflag)
|
||||
break;
|
||||
}
|
||||
|
||||
- if (errno == EEXIST
|
||||
- && (interdir_made
|
||||
+ if (errno == EEXIST)
|
||||
+ {
|
||||
+ if (interdir_made
|
||||
|| keep_directory_symlink_option
|
||||
|| old_files_option == NO_OVERWRITE_DIR_OLD_FILES
|
||||
|| old_files_option == DEFAULT_OLD_FILES
|
||||
- || old_files_option == OVERWRITE_OLD_FILES))
|
||||
- {
|
||||
- struct stat st;
|
||||
- st.st_mode = 0;
|
||||
-
|
||||
- if (keep_directory_symlink_option
|
||||
- && is_directory_link (file_name, &st))
|
||||
- return 0;
|
||||
-
|
||||
- if ((st.st_mode != 0 && fstatat_flags == 0)
|
||||
- || deref_stat (file_name, &st) == 0)
|
||||
+ || old_files_option == OVERWRITE_OLD_FILES)
|
||||
{
|
||||
- current_mode = st.st_mode;
|
||||
- current_mode_mask = ALL_MODE_BITS;
|
||||
+ struct stat st;
|
||||
+ st.st_mode = 0;
|
||||
+
|
||||
+ if (keep_directory_symlink_option
|
||||
+ && is_directory_link (file_name, &st))
|
||||
+ return 0;
|
||||
|
||||
- if (S_ISDIR (current_mode))
|
||||
+ if ((st.st_mode != 0 && fstatat_flags == 0)
|
||||
+ || deref_stat (file_name, &st) == 0)
|
||||
{
|
||||
- if (interdir_made)
|
||||
- {
|
||||
- repair_delayed_set_stat (file_name, &st);
|
||||
- return 0;
|
||||
- }
|
||||
- else if (old_files_option == NO_OVERWRITE_DIR_OLD_FILES)
|
||||
+ current_mode = st.st_mode;
|
||||
+ current_mode_mask = ALL_MODE_BITS;
|
||||
+
|
||||
+ if (S_ISDIR (current_mode))
|
||||
{
|
||||
- /* Temporarily change the directory mode to a safe
|
||||
- value, to be able to create files in it, should
|
||||
- the need be.
|
||||
- */
|
||||
- mode = safe_dir_mode (&st);
|
||||
- status = fd_chmod(-1, file_name, mode,
|
||||
- AT_SYMLINK_NOFOLLOW, DIRTYPE);
|
||||
- if (status == 0)
|
||||
+ if (interdir_made)
|
||||
{
|
||||
- /* Store the actual directory mode, to be restored
|
||||
- later.
|
||||
- */
|
||||
- current_stat_info.stat = st;
|
||||
- current_mode = mode & ~ current_umask;
|
||||
- current_mode_mask = MODE_RWX;
|
||||
- atflag = AT_SYMLINK_NOFOLLOW;
|
||||
- break;
|
||||
+ repair_delayed_set_stat (file_name, &st);
|
||||
+ return 0;
|
||||
}
|
||||
- else
|
||||
+ else if (old_files_option == NO_OVERWRITE_DIR_OLD_FILES)
|
||||
{
|
||||
- chmod_error_details (file_name, mode);
|
||||
+ /* Temporarily change the directory mode to a safe
|
||||
+ value, to be able to create files in it, should
|
||||
+ the need be.
|
||||
+ */
|
||||
+ mode = safe_dir_mode (&st);
|
||||
+ status = fd_chmod (-1, file_name, mode,
|
||||
+ AT_SYMLINK_NOFOLLOW, DIRTYPE);
|
||||
+ if (status == 0)
|
||||
+ {
|
||||
+ /* Store the actual directory mode, to be restored
|
||||
+ later.
|
||||
+ */
|
||||
+ current_stat_info.stat = st;
|
||||
+ current_mode = mode & ~ current_umask;
|
||||
+ current_mode_mask = MODE_RWX;
|
||||
+ atflag = AT_SYMLINK_NOFOLLOW;
|
||||
+ break;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ chmod_error_details (file_name, mode);
|
||||
+ }
|
||||
}
|
||||
+ break;
|
||||
}
|
||||
- break;
|
||||
}
|
||||
}
|
||||
+ else if (old_files_option == UNLINK_FIRST_OLD_FILES)
|
||||
+ {
|
||||
+ status = 0;
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
errno = EEXIST;
|
||||
}
|
||||
|
||||
@@ -1978,11 +1985,12 @@ rename_directory (char *src, char *dst)
|
||||
else
|
||||
{
|
||||
int e = errno;
|
||||
+ bool interdir_made;
|
||||
|
||||
switch (e)
|
||||
{
|
||||
case ENOENT:
|
||||
- if (make_directories (dst) == 0)
|
||||
+ if (make_directories (dst, &interdir_made) == 0)
|
||||
{
|
||||
if (renameat (chdir_fd, src, chdir_fd, dst) == 0)
|
||||
return true;
|
||||
--
|
||||
cgit v1.1
|
||||
|
117
tar-fix-race-condition.patch
Normal file
117
tar-fix-race-condition.patch
Normal file
|
@ -0,0 +1,117 @@
|
|||
From 79a442d7b0e92622794bfa41dee18a28e450a0dc Mon Sep 17 00:00:00 2001
|
||||
From: Paul Eggert <eggert@cs.ucla.edu>
|
||||
Date: Thu, 9 Jun 2022 22:09:34 -0700
|
||||
Subject: tar: fix race condition
|
||||
|
||||
Problem reported by James Abbatiello in:
|
||||
https://lists.gnu.org/r/bug-tar/2022-03/msg00000.html
|
||||
* src/extract.c (make_directories): Do not assume that when
|
||||
mkdirat fails with errno == EEXIST that there is an existing file
|
||||
that can be statted. It could be a dangling symlink. Instead,
|
||||
wait until the end and stat it.
|
||||
---
|
||||
src/extract.c | 61 ++++++++++++++++++++++++++++++++++++++---------------------
|
||||
2 files changed, 43 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/src/extract.c b/src/extract.c
|
||||
index e7be463..0753dec 100644
|
||||
--- a/src/extract.c
|
||||
+++ b/src/extract.c
|
||||
@@ -636,8 +636,7 @@ fixup_delayed_set_stat (char const *src, char const *dst)
|
||||
}
|
||||
}
|
||||
|
||||
-/* After a file/link/directory creation has failed, see if
|
||||
- it's because some required directory was not present, and if so,
|
||||
+/* After a file/link/directory creation has failed due to ENOENT,
|
||||
create all required directories. Return zero if all the required
|
||||
directories were created, nonzero (issuing a diagnostic) otherwise.
|
||||
Set *INTERDIR_MADE if at least one directory was created. */
|
||||
@@ -646,6 +645,8 @@ make_directories (char *file_name, bool *interdir_made)
|
||||
{
|
||||
char *cursor0 = file_name + FILE_SYSTEM_PREFIX_LEN (file_name);
|
||||
char *cursor; /* points into the file name */
|
||||
+ char *parent_end = NULL;
|
||||
+ int parent_errno;
|
||||
|
||||
for (cursor = cursor0; *cursor; cursor++)
|
||||
{
|
||||
@@ -685,31 +686,47 @@ make_directories (char *file_name, bool *interdir_made)
|
||||
|
||||
print_for_mkdir (file_name, cursor - file_name, desired_mode);
|
||||
*interdir_made = true;
|
||||
+ parent_end = NULL;
|
||||
}
|
||||
- else if (errno == EEXIST)
|
||||
- status = 0;
|
||||
else
|
||||
- {
|
||||
- /* Check whether the desired file exists. Even when the
|
||||
- file exists, mkdir can fail with some errno value E other
|
||||
- than EEXIST, so long as E describes an error condition
|
||||
- that also applies. */
|
||||
- int e = errno;
|
||||
- struct stat st;
|
||||
- status = fstatat (chdir_fd, file_name, &st, 0);
|
||||
- if (status)
|
||||
- {
|
||||
- errno = e;
|
||||
- mkdir_error (file_name);
|
||||
- }
|
||||
- }
|
||||
+ switch (errno)
|
||||
+ {
|
||||
+ case ELOOP: case ENAMETOOLONG: case ENOENT: case ENOTDIR:
|
||||
+ /* FILE_NAME doesn't exist and couldn't be created; fail now. */
|
||||
+ mkdir_error (file_name);
|
||||
+ *cursor = '/';
|
||||
+ return status;
|
||||
+
|
||||
+ default:
|
||||
+ /* FILE_NAME may be an existing directory so do not fail now.
|
||||
+ Instead, arrange to check at loop exit, assuming this is
|
||||
+ the last loop iteration. */
|
||||
+ parent_end = cursor;
|
||||
+ parent_errno = errno;
|
||||
+ break;
|
||||
+ }
|
||||
|
||||
*cursor = '/';
|
||||
- if (status)
|
||||
- return status;
|
||||
}
|
||||
|
||||
- return 0;
|
||||
+ if (!parent_end)
|
||||
+ return 0;
|
||||
+
|
||||
+ /* Although we did not create the parent directory, some other
|
||||
+ process may have created it, so check whether it exists now. */
|
||||
+ *parent_end = '\0';
|
||||
+ struct stat st;
|
||||
+ int stat_status = fstatat (chdir_fd, file_name, &st, 0);
|
||||
+ if (!stat_status && !S_ISDIR (st.st_mode))
|
||||
+ stat_status = -1;
|
||||
+ if (stat_status)
|
||||
+ {
|
||||
+ errno = parent_errno;
|
||||
+ mkdir_error (file_name);
|
||||
+ }
|
||||
+ *parent_end = '/';
|
||||
+
|
||||
+ return stat_status;
|
||||
}
|
||||
|
||||
/* Return true if FILE_NAME (with status *STP, if STP) is not a
|
||||
@@ -824,7 +841,7 @@ maybe_recoverable (char *file_name, bool regular, bool *interdir_made)
|
||||
|
||||
case ENOENT:
|
||||
/* Attempt creating missing intermediate directories. */
|
||||
- if (make_directories (file_name, interdir_made) == 0 && *interdir_made)
|
||||
+ if (make_directories (file_name, interdir_made) == 0)
|
||||
return RECOVER_OK;
|
||||
break;
|
||||
|
||||
--
|
||||
cgit v1.1
|
||||
|
29
tar-ignore_lone_zero_blocks.patch
Normal file
29
tar-ignore_lone_zero_blocks.patch
Normal file
|
@ -0,0 +1,29 @@
|
|||
Index: tar-1.26/src/list.c
|
||||
===================================================================
|
||||
--- tar-1.26.orig/src/list.c 2011-02-16 23:12:16.000000000 +0100
|
||||
+++ tar-1.26/src/list.c 2014-06-11 11:48:38.129824435 +0200
|
||||
@@ -212,6 +212,14 @@ read_and (void (*do_something) (void))
|
||||
|
||||
if (!ignore_zeros_option)
|
||||
{
|
||||
+ /*
|
||||
+ * According to POSIX tar specs, this is wrong, but on the web
|
||||
+ * there are some tar specs that can trigger this, and some tar
|
||||
+ * implementations create tars according to that spec. For now,
|
||||
+ * let's not be pedantic about issuing the warning.
|
||||
+ */
|
||||
+#if 0
|
||||
+
|
||||
char buf[UINTMAX_STRSIZE_BOUND];
|
||||
|
||||
status = read_header (¤t_header, ¤t_stat_info,
|
||||
@@ -221,6 +229,9 @@ read_and (void (*do_something) (void))
|
||||
WARNOPT (WARN_ALONE_ZERO_BLOCK,
|
||||
(0, 0, _("A lone zero block at %s"),
|
||||
STRINGIFY_BIGINT (current_block_ordinal (), buf)));
|
||||
+#endif
|
||||
+ status = read_header (¤t_header, ¤t_stat_info,
|
||||
+ read_header_auto);
|
||||
break;
|
||||
}
|
||||
status = prev_status;
|
297
tar-recursive--files-from.patch
Normal file
297
tar-recursive--files-from.patch
Normal file
|
@ -0,0 +1,297 @@
|
|||
From http://lists.gnu.org/archive/html/bug-tar/2014-09/msg00009.html
|
||||
|
||||
* src/common.h (name_add_file): Change signature.
|
||||
* src/names.c (name_elt_alloc_matflags): New function.
|
||||
(name_add_name): Use name_elt_alloc_matflags.
|
||||
(name_add_file): Take matching flags as third argument.
|
||||
(read_next_name): Remove trailing slashes.
|
||||
* src/tar.c (parse_opt): Pass matching_flags to name_add_file.
|
||||
|
||||
* tests/T-dir00.at: New file.
|
||||
* tests/T-dir01.at: New file.
|
||||
* tests/Makefile.am: Add new testcases.
|
||||
* tests/testsuite.at: Likewise.
|
||||
---
|
||||
src/common.h | 2 +-
|
||||
src/names.c | 56 ++++++++++++++++++++++++++++++++++--------------------
|
||||
src/tar.c | 2 +-
|
||||
tests/Makefile.am | 2 ++
|
||||
tests/T-dir00.at | 45 +++++++++++++++++++++++++++++++++++++++++++
|
||||
tests/T-dir01.at | 45 +++++++++++++++++++++++++++++++++++++++++++
|
||||
tests/testsuite.at | 2 ++
|
||||
7 files changed, 131 insertions(+), 23 deletions(-)
|
||||
create mode 100644 tests/T-dir00.at
|
||||
create mode 100644 tests/T-dir01.at
|
||||
|
||||
Index: tar-1.28/src/common.h
|
||||
===================================================================
|
||||
--- tar-1.28.orig/src/common.h 2015-02-09 15:05:47.642772569 +0100
|
||||
+++ tar-1.28/src/common.h 2015-02-09 15:05:50.076794925 +0100
|
||||
@@ -725,7 +725,7 @@ int uname_to_uid (char const *uname, uid
|
||||
void name_init (void);
|
||||
void name_add_name (const char *name, int matching_flags);
|
||||
void name_add_dir (const char *name);
|
||||
-void name_add_file (const char *name, int term);
|
||||
+void name_add_file (const char *name, int term, int matching_flags);
|
||||
void name_term (void);
|
||||
const char *name_next (int change_dirs);
|
||||
void name_gather (void);
|
||||
Index: tar-1.28/src/names.c
|
||||
===================================================================
|
||||
--- tar-1.28.orig/src/names.c 2015-02-09 15:05:47.642772569 +0100
|
||||
+++ tar-1.28/src/names.c 2015-02-09 15:05:50.076794925 +0100
|
||||
@@ -258,6 +258,21 @@ name_elt_alloc (void)
|
||||
return elt;
|
||||
}
|
||||
|
||||
+static struct name_elt *
|
||||
+name_elt_alloc_matflags (int matflags)
|
||||
+{
|
||||
+ static int prev_flags = 0; /* FIXME: Or EXCLUDE_ANCHORED? */
|
||||
+ struct name_elt *ep = name_elt_alloc ();
|
||||
+ if (prev_flags != matflags)
|
||||
+ {
|
||||
+ ep->type = NELT_FMASK;
|
||||
+ ep->v.matching_flags = matflags;
|
||||
+ prev_flags = matflags;
|
||||
+ ep = name_elt_alloc ();
|
||||
+ }
|
||||
+ return ep;
|
||||
+}
|
||||
+
|
||||
static void
|
||||
name_list_adjust (void)
|
||||
{
|
||||
@@ -276,20 +291,13 @@ name_list_advance (void)
|
||||
free (elt);
|
||||
}
|
||||
|
||||
-/* Add to name_array the file NAME with fnmatch options MATCHING_FLAGS */
|
||||
+
|
||||
+/* Add to name_array the file NAME with fnmatch options MATFLAGS */
|
||||
void
|
||||
-name_add_name (const char *name, int matching_flags)
|
||||
+name_add_name (const char *name, int matflags)
|
||||
{
|
||||
- static int prev_flags = 0; /* FIXME: Or EXCLUDE_ANCHORED? */
|
||||
- struct name_elt *ep = name_elt_alloc ();
|
||||
+ struct name_elt *ep = name_elt_alloc_matflags (matflags);
|
||||
|
||||
- if (prev_flags != matching_flags)
|
||||
- {
|
||||
- ep->type = NELT_FMASK;
|
||||
- ep->v.matching_flags = matching_flags;
|
||||
- prev_flags = matching_flags;
|
||||
- ep = name_elt_alloc ();
|
||||
- }
|
||||
ep->type = NELT_NAME;
|
||||
ep->v.name = name;
|
||||
name_count++;
|
||||
@@ -305,9 +313,10 @@ name_add_dir (const char *name)
|
||||
}
|
||||
|
||||
void
|
||||
-name_add_file (const char *name, int term)
|
||||
+name_add_file (const char *name, int term, int matflags)
|
||||
{
|
||||
- struct name_elt *ep = name_elt_alloc ();
|
||||
+ struct name_elt *ep = name_elt_alloc_matflags (matflags);
|
||||
+
|
||||
ep->type = NELT_FILE;
|
||||
ep->v.file.name = name;
|
||||
ep->v.file.term = term;
|
||||
@@ -389,6 +398,15 @@ add_file_id (const char *filename)
|
||||
file_id_list = p;
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
+/* Chop trailing slashes. */
|
||||
+static void
|
||||
+chopslash (char *str)
|
||||
+{
|
||||
+ char *p = str + strlen (str) - 1;
|
||||
+ while (p > str && ISSLASH (*p))
|
||||
+ *p-- = '\0';
|
||||
+}
|
||||
|
||||
enum read_file_list_state /* Result of reading file name from the list file */
|
||||
{
|
||||
@@ -428,7 +446,7 @@ read_name_from_file (struct name_elt *en
|
||||
if (counter == name_buffer_length)
|
||||
name_buffer = x2realloc (name_buffer, &name_buffer_length);
|
||||
name_buffer[counter] = 0;
|
||||
-
|
||||
+ chopslash (name_buffer);
|
||||
return (counter == 0 && c == EOF) ? file_list_end : file_list_success;
|
||||
}
|
||||
|
||||
@@ -518,7 +536,6 @@ copy_name (struct name_elt *ep)
|
||||
{
|
||||
const char *source;
|
||||
size_t source_len;
|
||||
- char *cursor;
|
||||
|
||||
source = ep->v.name;
|
||||
source_len = strlen (source);
|
||||
@@ -536,11 +553,7 @@ copy_name (struct name_elt *ep)
|
||||
name_buffer = xmalloc(name_buffer_length + 2);
|
||||
}
|
||||
strcpy (name_buffer, source);
|
||||
-
|
||||
- /* Zap trailing slashes. */
|
||||
- cursor = name_buffer + strlen (name_buffer) - 1;
|
||||
- while (cursor > name_buffer && ISSLASH (*cursor))
|
||||
- *cursor-- = '\0';
|
||||
+ chopslash (name_buffer);
|
||||
}
|
||||
|
||||
|
||||
@@ -553,7 +566,8 @@ static int matching_flags; /* exclude_fn
|
||||
the request to change to the given directory.
|
||||
|
||||
Entries of type NELT_FMASK cause updates of the matching_flags
|
||||
- value. */
|
||||
+ value.
|
||||
+*/
|
||||
static struct name_elt *
|
||||
name_next_elt (int change_dirs)
|
||||
{
|
||||
Index: tar-1.28/src/tar.c
|
||||
===================================================================
|
||||
--- tar-1.28.orig/src/tar.c 2015-02-09 15:05:47.642772569 +0100
|
||||
+++ tar-1.28/src/tar.c 2015-02-09 15:05:50.077794935 +0100
|
||||
@@ -1641,7 +1641,7 @@ parse_opt (int key, char *arg, struct ar
|
||||
break;
|
||||
|
||||
case 'T':
|
||||
- name_add_file (arg, filename_terminator);
|
||||
+ name_add_file (arg, filename_terminator, MAKE_INCL_OPTIONS (args));
|
||||
/* Indicate we've been given -T option. This is for backward
|
||||
compatibility only, so that `tar cfT archive /dev/null will
|
||||
succeed */
|
||||
Index: tar-1.28/tests/Makefile.am
|
||||
===================================================================
|
||||
--- tar-1.28.orig/tests/Makefile.am 2015-02-09 15:05:47.642772569 +0100
|
||||
+++ tar-1.28/tests/Makefile.am 2015-02-09 15:05:50.077794935 +0100
|
||||
@@ -43,6 +43,8 @@ $(srcdir)/package.m4: $(top_srcdir)/conf
|
||||
|
||||
TESTSUITE_AT = \
|
||||
T-cd.at\
|
||||
+ T-dir00.at\
|
||||
+ T-dir01.at\
|
||||
T-empty.at\
|
||||
T-null.at\
|
||||
T-rec.at\
|
||||
Index: tar-1.28/tests/T-dir00.at
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ tar-1.28/tests/T-dir00.at 2015-02-09 15:05:50.077794935 +0100
|
||||
@@ -0,0 +1,45 @@
|
||||
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
|
||||
+#
|
||||
+# Test suite for GNU tar.
|
||||
+# Copyright 2014 Free Software Foundation, Inc.
|
||||
+
|
||||
+# This file is part of GNU tar.
|
||||
+
|
||||
+# GNU tar is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 3 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+
|
||||
+# GNU tar is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+# Tar 1.27 and 1.28 did not extract files under directory memberes listed
|
||||
+# in the file read by --file-from.
|
||||
+#
|
||||
+# Reported-by: Jean-Louis Martineau <address@hidden>
|
||||
+# References: <address@hidden>,
|
||||
+# http://lists.gnu.org/archive/html/bug-tar/2014-09/msg00006.html
|
||||
+
|
||||
+AT_SETUP([recursive extraction from --files-from])
|
||||
+AT_KEYWORDS([files-from extract T-dir T-dir00])
|
||||
+AT_TAR_CHECK([
|
||||
+mkdir dir
|
||||
+genfile -f dir/file1
|
||||
+genfile -f dir/file2
|
||||
+tar cf archive dir
|
||||
+rm -rf dir
|
||||
+echo dir > list
|
||||
+tar xfTv archive list | sort
|
||||
+],
|
||||
+[0],
|
||||
+[dir/
|
||||
+dir/file1
|
||||
+dir/file2
|
||||
+])
|
||||
+AT_CLEANUP
|
||||
+
|
||||
Index: tar-1.28/tests/T-dir01.at
|
||||
===================================================================
|
||||
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||
+++ tar-1.28/tests/T-dir01.at 2015-02-09 15:45:52.309679130 +0100
|
||||
@@ -0,0 +1,45 @@
|
||||
+# Process this file with autom4te to create testsuite. -*- Autotest -*-
|
||||
+#
|
||||
+# Test suite for GNU tar.
|
||||
+# Copyright 2014 Free Software Foundation, Inc.
|
||||
+
|
||||
+# This file is part of GNU tar.
|
||||
+
|
||||
+# GNU tar is free software; you can redistribute it and/or modify
|
||||
+# it under the terms of the GNU General Public License as published by
|
||||
+# the Free Software Foundation; either version 3 of the License, or
|
||||
+# (at your option) any later version.
|
||||
+
|
||||
+# GNU tar is distributed in the hope that it will be useful,
|
||||
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+# GNU General Public License for more details.
|
||||
+
|
||||
+# You should have received a copy of the GNU General Public License
|
||||
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
+
|
||||
+# Tar 1.27 and 1.28 did not remove trailing slashes from file names
|
||||
+# obtained with the --file-from option.
|
||||
+#
|
||||
+# Reported-by: Jean-Louis Martineau <address@hidden>
|
||||
+# References: <address@hidden>,
|
||||
+# http://lists.gnu.org/archive/html/bug-tar/2014-09/msg00006.html
|
||||
+
|
||||
+AT_SETUP([trailing slash in --files-from])
|
||||
+AT_KEYWORDS([files-from extract T-dir T-dir01])
|
||||
+AT_TAR_CHECK([
|
||||
+mkdir dir
|
||||
+genfile -f dir/file1
|
||||
+genfile -f dir/file2
|
||||
+tar cf archive dir
|
||||
+rm -rf dir
|
||||
+echo dir/ > list
|
||||
+tar xfTv archive list | sort
|
||||
+],
|
||||
+[0],
|
||||
+[dir/
|
||||
+dir/file1
|
||||
+dir/file2
|
||||
+])
|
||||
+AT_CLEANUP
|
||||
+
|
||||
Index: tar-1.28/tests/testsuite.at
|
||||
===================================================================
|
||||
--- tar-1.28.orig/tests/testsuite.at 2015-02-09 15:05:47.642772569 +0100
|
||||
+++ tar-1.28/tests/testsuite.at 2015-02-09 15:05:50.116795293 +0100
|
||||
@@ -205,6 +205,8 @@ m4_include([T-empty.at])
|
||||
m4_include([T-null.at])
|
||||
m4_include([T-zfile.at])
|
||||
m4_include([T-nonl.at])
|
||||
+m4_include([T-dir00.at])
|
||||
+m4_include([T-dir01.at])
|
||||
|
||||
AT_BANNER([Various options])
|
||||
m4_include([indexfile.at])
|
15
tar-wildcards.patch
Normal file
15
tar-wildcards.patch
Normal file
|
@ -0,0 +1,15 @@
|
|||
Index: tar-1.25/src/names.c
|
||||
===================================================================
|
||||
--- tar-1.25.orig/src/names.c
|
||||
+++ tar-1.25/src/names.c
|
||||
@@ -970,10 +970,6 @@ collect_and_sort_names (void)
|
||||
|
||||
if (name->found_count || name->directory)
|
||||
continue;
|
||||
- if (name->matching_flags & EXCLUDE_WILDCARDS)
|
||||
- /* NOTE: EXCLUDE_ANCHORED is not relevant here */
|
||||
- /* FIXME: just skip regexps for now */
|
||||
- continue;
|
||||
chdir_do (name->change_dir);
|
||||
|
||||
if (name->name[0] == 0)
|
635
tar.changes
Normal file
635
tar.changes
Normal file
|
@ -0,0 +1,635 @@
|
|||
* Wed Dec 13 2023 danilo.spinella@suse.com
|
||||
- Fix CVE-2023-39804, Incorrectly handled extension attributes in
|
||||
PAX archives can lead to a crash, bsc#1217969
|
||||
* fix-CVE-2023-39804.patch
|
||||
* Tue Feb 14 2023 danilo.spinella@suse.com
|
||||
- Fix CVE-2022-48303, tar has a one-byte out-of-bounds read that
|
||||
results in use of uninitialized memory for a conditional jump
|
||||
(CVE-2022-48303, bsc#1207753)
|
||||
* fix-CVE-2022-48303.patch
|
||||
- Fix hang when unpacking test tarball, bsc#1202436
|
||||
* remove bsc1202436.patch
|
||||
* bsc1202436-1.patch
|
||||
* bsc1202436-1.patch
|
||||
* Thu Dec 22 2022 danilo.spinella@suse.com
|
||||
- Fix hang when unpacking test tarball, bsc#1202436
|
||||
* bsc1202436.patch
|
||||
* Mon Oct 31 2022 danilo.spinella@suse.com
|
||||
- Fix unexpected inconsistency when making directory, bsc#1203600
|
||||
* tar-avoid-overflow-in-symlinks-tests.patch
|
||||
* tar-fix-extract-unlink.patch
|
||||
- Update race condition fix, bsc#1200657
|
||||
* tar-fix-race-condition.patch
|
||||
- Refresh bsc1200657.patch
|
||||
* Wed Aug 17 2022 sflees@suse.de
|
||||
- bsc1200657.patch was previously incomplete leading to deadlocks
|
||||
* bsc#1202436
|
||||
* bsc1200657.patch updated
|
||||
* Mon Jun 20 2022 danilo.spinella@suse.com
|
||||
- Fix race condition while creating intermediate subdirectories,
|
||||
bsc#1200657
|
||||
* bsc1200657.patch
|
||||
* Thu Oct 14 2021 mail@bernhard-voelker.de
|
||||
- tests-skip-time01-on-32bit-time_t.patch: Add patch to skip test
|
||||
'tests/time01.at' on platforms with 32-bit time_t for now.
|
||||
- tar.spec: Reference it.
|
||||
(%%check): Output the testsuite.log in case the testsuite failed.
|
||||
* Fri Oct 8 2021 danilo.spinella@suse.com
|
||||
- The following issues have already been fixed in this package but
|
||||
weren't previously mentioned in the changes file:
|
||||
* bsc#1181131, CVE-2021-20193
|
||||
* bsc#1120610
|
||||
* Wed Jun 9 2021 wolfgang.frisch@suse.com
|
||||
- Link /var/lib/tests/tar/bin/genfile as Position-Independent Executable
|
||||
(bsc#1184124).
|
||||
+ tar-PIE.patch
|
||||
* Sun Feb 14 2021 andreas.stieger@gmx.de
|
||||
- GNU tar 1.34:
|
||||
* Fix extraction over pipe
|
||||
* Fix memory leak in read_header
|
||||
* Fix extraction when . and .. are unreadable
|
||||
* Gracefully handle duplicate symlinks when extracting
|
||||
* Re-initialize supplementary groups when switching to user
|
||||
privileges
|
||||
* Sat Jan 9 2021 andreas.stieger@gmx.de
|
||||
- GNU tar 1.33:
|
||||
* POSIX extended format headers do not include PID by default
|
||||
* --delay-directory-restore works for archives with reversed
|
||||
member ordering
|
||||
* Fix extraction of a symbolic link hardlinked to another
|
||||
symbolic link
|
||||
* Wildcards in exclude-vcs-ignore mode don't match slash
|
||||
* Fix the --no-overwrite-dir option
|
||||
* Fix handling of chained renames in incremental backups
|
||||
* Link counting works for file names supplied with -T
|
||||
* Accept only position-sensitive (file-selection) options in file
|
||||
list files
|
||||
- remove deprecated texinfo packaging macros
|
||||
* Mon Oct 19 2020 lnussel@suse.de
|
||||
- prepare usrmerge (boo#1029961)
|
||||
* Fri Apr 3 2020 dimstar@opensuse.org
|
||||
- Drop Requires(pre) info in the preamble: the main package does
|
||||
not contain any info files, and has not even a pre script. The
|
||||
- doc subpackage already has the correct deps.
|
||||
* Fri Jan 31 2020 bjorn.lie@gmail.com
|
||||
- No longer recommend -lang: supplements are in use.
|
||||
* Mon Mar 25 2019 kstreitova@suse.com
|
||||
- update to version 1.32
|
||||
* Fix the use of --checkpoint without explicit --checkpoint-action
|
||||
* Fix extraction with the -U option
|
||||
* Fix iconv usage on BSD-based systems
|
||||
* Fix possible NULL dereference (savannah bug #55369)
|
||||
[bsc#1130496] [CVE-2019-9923]
|
||||
* Improve the testsuite
|
||||
- remove tar-1.31-tests_dirrem.patch and
|
||||
tar-1.31-racy_compress_tests.patch that are no longer needed
|
||||
(applied usptream)
|
||||
* Fri Mar 15 2019 crrodriguez@opensuse.org
|
||||
- Remove libattr-devel from buildrequires, tar no longer uses
|
||||
it but finds xattr functions in libc.
|
||||
* Thu Feb 14 2019 kstreitova@suse.com
|
||||
- update to version 1.31
|
||||
* Fix heap-buffer-overrun with --one-top-level, bug introduced
|
||||
with the addition of that option in 1.28
|
||||
* Support for zstd compression
|
||||
* New option '--zstd' instructs tar to use zstd as compression
|
||||
program. When listing, extractng and comparing, zstd compressed
|
||||
archives are recognized automatically. When '-a' option is in
|
||||
effect, zstd compression is selected if the destination archive
|
||||
name ends in '.zst' or '.tzst'.
|
||||
* The -K option interacts properly with member names given in the
|
||||
command line. Names of members to extract can be specified along
|
||||
with the "-K NAME" option. In this case, tar will extract NAME
|
||||
and those of named members that appear in the archive after it,
|
||||
which is consistent with the semantics of the option. Previous
|
||||
versions of tar extracted NAME, those of named members that
|
||||
appeared before it, and everything after it.
|
||||
* Fix CVE-2018-20482 - When creating archives with the --sparse
|
||||
option, previous versions of tar would loop endlessly if a
|
||||
sparse file had been truncated while being archived.
|
||||
- remove the following patches (upstreamed)
|
||||
* tar-1.30-tests-difflink.patch
|
||||
* tar-1.30-tests_dirrem_race.patch
|
||||
- refresh add_readme-tests.patch
|
||||
- add tar-1.31-tests_dirrem.patch to fix expected output in dirrem
|
||||
tests
|
||||
- add tar-1.31-racy_compress_tests.patch to fix compression tests
|
||||
* Fri May 11 2018 kstreitova@suse.com
|
||||
- add tar-1.30-tests_dirrem_race.patch to fix race in dirrem01 and
|
||||
dirrem02 tests that were passing/failing randomly because of that
|
||||
- run spec-cleaner
|
||||
- renumber patches
|
||||
* Tue Apr 3 2018 kukuk@suse.de
|
||||
- Use %%license instead of %%doc [bsc#1082318]
|
||||
* Thu Jan 4 2018 kstreitova@suse.com
|
||||
- add tar-1.30-tests-difflink.patch to fix difflink.at test
|
||||
(https://www.mail-archive.com/bug-tar@gnu.org/msg05440.html)
|
||||
* Mon Dec 18 2017 avindra@opensuse.org
|
||||
- GNU tar 1.30:
|
||||
* Member names containing '..' components are now skipped when
|
||||
extracting.
|
||||
* Report erroneous use of position-sensitive options.
|
||||
* --numeric-owner now affects private headers too.
|
||||
* Fixed the --delay-directory-restore option
|
||||
* The --warnings=failed-read option
|
||||
* The --warnings=none option now suppresses all warnings
|
||||
* Fix reporting of hardlink mismatches during compare
|
||||
- cleanup with spec-cleaner
|
||||
- switch all urls to https
|
||||
- drop upstreamed patches
|
||||
* add-return-values-to-backup-scripts.patch
|
||||
* tar-1.29-extract_pathname_bypass.patch
|
||||
- rebase add_readme-tests.patch
|
||||
* Thu Apr 20 2017 kstreitova@suse.com
|
||||
- remove tar-1.26-remove_O_NONBLOCK.patch as this issue was fixed
|
||||
in tar 1.27 (commit 03858cf583ce299b836d8a848967ce290a6bf303)
|
||||
* Mon Apr 3 2017 svalx@svalx.net
|
||||
- Use update-alternatives according to current documentation
|
||||
* Mon Mar 27 2017 svalx@svalx.net
|
||||
- Disable tar-1.26-remove_O_NONBLOCK.patch - this issue has been
|
||||
fixed in tar-1.27
|
||||
- backup-scripts subpackage change to noarch
|
||||
- Change rpm group of tar-tests to Development/Tools/Other
|
||||
- Enable rmt building, change package description
|
||||
- Switch rmt to alternatives system
|
||||
- Separate rmt subpackage - it can be used by different archiving
|
||||
tools as a dedicated program
|
||||
- Change rmt path to /usr/bin folder - it can be used by non privileged
|
||||
users for backup purposes. Security is controlled by access rights to
|
||||
the targets and remote shell.
|
||||
- Separate doc subpackage
|
||||
- Remove conditions for old SUSE builds and lang subpackage
|
||||
- Rename restore script to restore.sh for avoiding file conflicts
|
||||
with dump/restore
|
||||
* Thu Mar 23 2017 kstreitova@suse.com
|
||||
- move binaries from /bin to /usr/bin [bsc#1029977]
|
||||
* refresh tar-backup-spec-fix-paths.patch to change path of the
|
||||
tar binary from TAR=/bin/tar to TAR=/usr/bin/tar
|
||||
- use spec-cleaner
|
||||
* Thu Dec 15 2016 vcizek@suse.com
|
||||
- update tar-1.29-extract_pathname_bypass.patch to the upstream
|
||||
one that fixes POINTYFEATHER issue but it doesn't limit append or
|
||||
create operations as the initial patch did [bsc#1012633]
|
||||
[CVE-2016-6321]
|
||||
* Tue Nov 8 2016 kstreitova@suse.com
|
||||
- add tar-1.29-extract_pathname_bypass.patch to fix POINTYFEATHER
|
||||
vulnerability - GNU tar archiver can be tricked into extracting
|
||||
files and directories in the given destination, regardless of the
|
||||
path name(s) specified on the command line [bsc#1007188]
|
||||
[CVE-2016-6321]
|
||||
* Sat May 28 2016 astieger@suse.com
|
||||
- GNU tar 1.29:
|
||||
* New options: --verbatim-files-from, --no-verbatim-files-from
|
||||
* --null option reads file names verbatim
|
||||
* New options: --owner-map=FILE and --group-map=FILE
|
||||
* New option --clamp-mtime
|
||||
* Deprecated --preserve option removed
|
||||
* Sparse file detection - now uses SEEK_DATA/SEEK_HOLE on
|
||||
systems that support it. This allows for considerable speed-up
|
||||
in sparse-file detection. New option --hole-detection for
|
||||
algorithm selection.
|
||||
* Wed Mar 23 2016 svalx@svalx.net
|
||||
- Add add-return-values-to-backup-scripts.patch
|
||||
* Mon Apr 13 2015 vcizek@suse.com
|
||||
- Revert tar-recursive--files-from.patch because it causes regression
|
||||
(bnc#918487, bnc#919233)
|
||||
* Mon Feb 9 2015 vcizek@suse.com
|
||||
- extract files recursively with --files-from (bnc#913058)
|
||||
* added tar-recursive--files-from.patch
|
||||
- call autoreconf in %%prep
|
||||
* Sun Dec 21 2014 meissner@suse.com
|
||||
- build with PIE
|
||||
* Thu Nov 20 2014 andreas.stieger@gmx.de
|
||||
- compile in ACLs, Xattr and selinux support [boo#906413]
|
||||
* Fri Aug 29 2014 jengelh@inai.de
|
||||
- Improve on RPM group classification
|
||||
* Sat Aug 2 2014 andreas.stieger@gmx.de
|
||||
- GNU tar 1.28:
|
||||
* New --checkpoint-action=totals
|
||||
* Extended checkpoint format specification
|
||||
* New option --one-top-level
|
||||
* New option --sort
|
||||
* New exclusion options:
|
||||
- -exclude-ignore=FILE
|
||||
- -exclude-ignore-recursive=FILE
|
||||
- -exclude-vcs-ignores
|
||||
* refuses to read input from and write output to a tty
|
||||
- packaging changes:
|
||||
* adjust patch for context change: add_readme-tests.patch
|
||||
* remove patch applied upstream:
|
||||
tar-fix_eternal_loop_in_handle_option.patch
|
||||
* Mon Jul 28 2014 vcizek@suse.com
|
||||
- don't print lone zero blocks warning (bnc#881863)
|
||||
* there are many tar implementations around that create invalid
|
||||
archives with a zero block in the middle
|
||||
* https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=235820
|
||||
* added tar-ignore_lone_zero_blocks.patch from Fedora
|
||||
* Wed Mar 26 2014 vcizek@suse.com
|
||||
- fix an infinite loop in handle_option (bnc#867919 and bnc#870422)
|
||||
* added tar-fix_eternal_loop_in_handle_option.patch
|
||||
* Tue Jan 7 2014 llipavsky@suse.com
|
||||
- add tests subpackage.
|
||||
* It is the same testsuite that is run during make check.
|
||||
* It is now possible to run it in real system to verify that
|
||||
nothing is broken by incompatible libraries, etc.
|
||||
- add add_readme-tests.patch: README for testsuite
|
||||
* Tue Nov 19 2013 andreas.stieger@gmx.de
|
||||
- update to 1.27.1
|
||||
* Fix unquoting of file names obtained via the -T option.
|
||||
* Fix GNU long link header timestamp (backward compatibility).
|
||||
* Fix extracting sparse members from star archives.
|
||||
* Thu Oct 24 2013 andreas.stieger@gmx.de
|
||||
- update to 1.27
|
||||
- bug fixes:
|
||||
* PAX-format sparse archive files no longer restricted to 8 GiB.
|
||||
* adjust diagnostics and output to GNU coding
|
||||
- new features:
|
||||
* The --owner and --group options now accept numeric IDs
|
||||
* restore traditional functionality of --keep-old-files and
|
||||
- -skip-old-files, treat existing file as errors for the former
|
||||
* --warning=existing-file gives verbose notice for this
|
||||
* Support for POSIX ACLs, extended attributes and SELinux context
|
||||
- -xattrs, --acls and --selinux and their `--no-' counterparts
|
||||
- -xattrs-include and --xattrs-exclude allows selective control
|
||||
* Any option taking a command name as its argument now accepts a
|
||||
full command line as well:
|
||||
- -checkpoint-action=exec
|
||||
- I, --use-compress-program
|
||||
- F, --info-script
|
||||
- -to-command
|
||||
* environment variables supplied to such commands can now be used
|
||||
in the command line itself
|
||||
* New warning control option --warning=[no-]record-size controls
|
||||
display of actual record size, if it differs from the default
|
||||
* New command line option --keep-directory-symlink to disable
|
||||
default behaviour that unlinks exising symbolic link for an
|
||||
extracted directory of the corresponding name
|
||||
- packaging changes:
|
||||
* drop tar-1.26-stdio.in.patch, committed upstream
|
||||
* drop config-guess-sub-update.patch, newer version in upstream
|
||||
* verify source signature
|
||||
* Thu Aug 22 2013 vcizek@suse.com
|
||||
- added fix for paxutils rtapelib which is bundled with tar.
|
||||
the very same fix was added to cpio too (bnc#658031)
|
||||
* paxutils-rtapelib_mtget.patch
|
||||
* Fri Apr 5 2013 idonmez@suse.com
|
||||
- Add Source URL, see https://en.opensuse.org/SourceUrls
|
||||
* Sat Feb 2 2013 schwab@suse.de
|
||||
- Add config-guess-sub-update.patch:
|
||||
Update config.guess/sub for aarch64
|
||||
* Tue Jul 17 2012 aj@suse.de
|
||||
- Fix build failure with undefined gets (glibc 2.16).
|
||||
* Wed May 30 2012 sweet_f_a@gmx.de
|
||||
- avoid automake dependency
|
||||
* Fri Apr 20 2012 crrodriguez@opensuse.org
|
||||
- disable 'runtime checks' in m4/*.m4 that override
|
||||
system calls with custom implementations to workaround
|
||||
very old kernel/libc bugs (dating 2003-2009)
|
||||
we do not ship those buggy components nowdays.
|
||||
* Fri Apr 20 2012 crrodriguez@opensuse.org
|
||||
- Switch to default archive type to POSIX.1-2001, which is ten years
|
||||
old and has no limits on filesize,filename length etc.
|
||||
* Mon Dec 19 2011 tcech@suse.cz
|
||||
- tar-1.26-remove_O_NONBLOCK.patch:
|
||||
don't use O_NONBLOCK as a flag for read,
|
||||
when file is offline, read with O_NONBLOCK returns EAGAIN,
|
||||
but tar doesn't handle it
|
||||
(bnc#737331)
|
||||
* Sun Oct 30 2011 dmueller@suse.de
|
||||
- disable testsuite on qemu build
|
||||
* Wed Oct 5 2011 sweet_f_a@gmx.de
|
||||
- minor portability fixes
|
||||
* Thu Sep 29 2011 sweet_f_a@gmx.de
|
||||
- spec cleaner, avoid some deprecated macros
|
||||
- fix non-utf8-spec-file
|
||||
- fix macro-in-comment
|
||||
- enable make check
|
||||
- remove upstream-fixed/obsolete patches (fortifysourcessigabrt,
|
||||
disable-listed02-test, disable_languages)
|
||||
- call help2man inside specfile instead of paching tar's build chain
|
||||
* Tue Mar 15 2011 puzel@novell.com
|
||||
- update to tar-1.26
|
||||
* Fix the --verify option, which broke in version 1.24.
|
||||
* Fix storing long sparse file names in PAX archives.
|
||||
* Fix correctness of --atime-preserve=replace
|
||||
* tar --atime-preserve=replace no longer tries to restore atime of
|
||||
zero-sized files.
|
||||
* Fix bug with --one-file-system --listed-incremental
|
||||
* Wed Nov 24 2010 puzel@novell.com
|
||||
- fix tar-backup-scripts (bnc#654199)
|
||||
- add tar-backup-spec-fix-paths.patch
|
||||
- cleanup spec
|
||||
* Tue Nov 9 2010 puzel@novell.com
|
||||
- update to tar-1.25
|
||||
* Fix extraction of empty directories with the -C option in effect.
|
||||
* Fix extraction of device nodes.
|
||||
* Make sure name matching occurs before eventual name transformation.
|
||||
* Fix the behavior of tar -x --overwrite on hosts lacking O_NOFOLLOW.
|
||||
* Support alternative decompression programs.
|
||||
- update to tar-1.24
|
||||
* The new --full-time option instructs tar to output file
|
||||
time stamps to the full resolution.
|
||||
* More reliable directory traversal when creating archives
|
||||
* When extracting symbolic links, tar now restores attributes
|
||||
such as last-modified time and link permissions, if the
|
||||
operating system supports this.
|
||||
* The --dereference (-h) option now applies to files that are
|
||||
copied into or out of archives, independently of other options.
|
||||
* When receiving SIGPIPE, tar would exit with error status and
|
||||
"write error" diagnostics.
|
||||
- disable-silent-rules
|
||||
- updated tar-fortifysourcessigabrt.patch
|
||||
* Mon Jun 28 2010 jengelh@medozas.de
|
||||
- use %%_smp_mflags
|
||||
* Fri Mar 12 2010 mseben@novell.com
|
||||
- updated to version 1.23
|
||||
* Improved record size autodetection
|
||||
* Use of lseek on seekable archives
|
||||
* New command line option --warning
|
||||
* New command line option --level
|
||||
* Improved behavior if some files were removed during incremental dumps
|
||||
* Modification times of PAX extended headers
|
||||
* Time references in the --pax-option argument
|
||||
* Augmented environment of the --to-command script
|
||||
* Fix handling of hard link targets by -c --transform
|
||||
* Fix hard links recognition with -c --remove-files
|
||||
* Fix restoring files from backup (debian bug #508199)
|
||||
* Correctly restore modes and permissions on existing directories
|
||||
* The --remove-files option removes files only if they were succesfully stored in the archive
|
||||
* Fix storing and listing of the volume labels in POSIX format
|
||||
* Improve algorithm for splitting long file names (ustar format)
|
||||
* Fix possible memory overflow in the rmt client code (CVE-2010-0624)
|
||||
- deprecated heap_overflow_in_rtapelib.patch
|
||||
* Wed Mar 3 2010 mseben@novell.com
|
||||
- added heap_overflow_in_rtapelib.patch fix possible heap overflow in
|
||||
rtapelib.c (bnc#579475)
|
||||
* Tue Feb 2 2010 mseben@novell.com
|
||||
- updated to version 1.22
|
||||
* Support for xz compression (--xz option)
|
||||
* Short option -J is reassigned as a shortcut for --xz
|
||||
* The option -I is a shortcut for --use-compress-program
|
||||
* The --no-recursive option works with --incremental
|
||||
- deprecated recognize_xz.patch
|
||||
- created tar-backup-scripts subpackage (bnc#574688)
|
||||
* Sun Dec 6 2009 jengelh@medozas.de
|
||||
- enable parallel building
|
||||
* Fri Dec 4 2009 meissner@suse.de
|
||||
- fixed FORTIFY_SOURCE=2 issue with gcc 4.5.
|
||||
* Sun Aug 30 2009 aj@suse.de
|
||||
- recommend not require language subpackage
|
||||
* Tue Mar 3 2009 pth@suse.de
|
||||
- Recognize .xz as lzma archive.
|
||||
* Wed Feb 11 2009 coolo@suse.de
|
||||
- update to version 1.21
|
||||
* New short option -J - A shortcut for --lzma.
|
||||
* New option --lzop
|
||||
* Compressed format recognition
|
||||
* Using --exclude-vcs handles also files used internally by
|
||||
Bazaar, Mercurial and Darcs.
|
||||
- split out language subpackage
|
||||
- recommend xz instead of the old name of lzma
|
||||
* Wed Nov 19 2008 mkoenig@suse.de
|
||||
- fix incremental backup with wildcard option [bnc#445411]
|
||||
* Mon Jun 23 2008 mkoenig@suse.de
|
||||
- update to version 1.20:
|
||||
* new options: --auto-compress, --lzma, --hard-dereference,
|
||||
- -checkpoint-action, --(no-)check-device, --transform
|
||||
* Add recommends tag for lzma
|
||||
- removed patches:
|
||||
tar-gcc43.patch
|
||||
tar-1.19-update_flag.patch
|
||||
* Fri Mar 28 2008 mkoenig@suse.de
|
||||
- apply upstream patch to avoid error message when updating
|
||||
an archive that does not exist [bnc#347525]
|
||||
* Wed Nov 14 2007 mkoenig@suse.de
|
||||
- update to version 1.19
|
||||
* New option --exclude-vcs
|
||||
* --exclude-tag and --exclude-cache options now work under
|
||||
incremental archives
|
||||
* Fix handling of renamed files in listed incremental archives
|
||||
* Fix --version output
|
||||
* Recognition of broken archives
|
||||
- merged patches:
|
||||
tar-1.15.1-CVE-2001-1267.patch
|
||||
tar-1.17-paxlib-owl-alloca.patch
|
||||
* Fri Oct 5 2007 mkoenig@suse.de
|
||||
- update to version 1.18
|
||||
Licensed under the GPLv3
|
||||
- merged patches:
|
||||
tar-1.17-testsuite12.patch
|
||||
* Mon Oct 1 2007 mkoenig@suse.de
|
||||
- fix build with gcc-4.3
|
||||
* Fri Aug 31 2007 mkoenig@suse.de
|
||||
- fixed another directory traversal vulnerability, CVE-2001-1267,
|
||||
CVE-2002-0399, [#29973]
|
||||
* Mon Aug 20 2007 mkoenig@suse.de
|
||||
- use correct patch for paxlib stack overflow [#301416]
|
||||
* Fri Aug 17 2007 lmichnovic@suse.cz
|
||||
- upstream fix: use of alloca can cause stack overflow
|
||||
(paxlib-owl-alloca.patch)
|
||||
* Thu Jun 21 2007 mkoenig@suse.de
|
||||
- update to version 1.17:
|
||||
* Fix archivation of sparse files in posix mode
|
||||
* Fix operation of --verify --listed-incremental
|
||||
* Fix --occurence
|
||||
* Scope of --transform and --strip-components options
|
||||
* End-of-volume script can send the new volume name to tar
|
||||
- remove patch (fixed upstream)
|
||||
tar-1.6.1-futimens.patch
|
||||
- fix test 12
|
||||
tar-1.17-testsuite12.patch
|
||||
* Tue May 22 2007 mkoenig@suse.de
|
||||
- fix build
|
||||
* Tue May 15 2007 coolo@suse.de
|
||||
- use %%find_lang
|
||||
* Wed Jan 24 2007 mkoenig@suse.de
|
||||
- update to version 1.16.1:
|
||||
* tar-1.16-CVE-2006-6097.patch merged upstream
|
||||
* tar-1.16-xheader_unused.patch merged upstream
|
||||
* New option --exclude-tag
|
||||
* The --exclude-cache option excludes directories that
|
||||
contain the CACHEDIR.TAG file from being archived
|
||||
* Race conditions have been fixed that in some cases briefly
|
||||
allowed files extracted by 'tar -x --same-owner' to be
|
||||
accessed by users that they shouldn't have been.
|
||||
* Tue Dec 5 2006 mkoenig@suse.de
|
||||
- update to version 1.16:
|
||||
Bugfixes:
|
||||
* Avoid running off file descriptors when using multiple -C options.
|
||||
* tar --index-file=FILE --file=- sent the archive to FILE, and
|
||||
the listing to stderr.
|
||||
* Detect attempts to update compressed archives.
|
||||
* Allow non-option arguments to be interspersed with options.
|
||||
* Previous version created invalid archives when files shrink
|
||||
during reading.
|
||||
* Compare mode (tar d) hanged when trying to compare file contents.
|
||||
* Previous versions in certain cases failed to restore directory
|
||||
modification times.
|
||||
New features:
|
||||
* New option --mtime allows to set modification times
|
||||
* New option --transform allows to transform file names before
|
||||
storing
|
||||
* --strip-components option works when deleting and comparing.
|
||||
* New option --show-transformed-names
|
||||
* Short option -l is now an alias of --check-links option,
|
||||
which complies with UNIX98
|
||||
* The --checkpoint option takes an optional argument specifying
|
||||
the number of records between the two successive checkpoints.
|
||||
* The --totals option can be used with any tar operation
|
||||
* Any number of -T (--files-from) options may be used in the
|
||||
command line.
|
||||
* List files containing null-separated file names are detected
|
||||
and processed automatically.
|
||||
* New option --no-unquote disables the unquoting of input file
|
||||
names.
|
||||
* New option --test-label tests the archive volume label.
|
||||
* New option --show-stored-names.
|
||||
* New option --to-command pipes the contents of archive members
|
||||
to the specified command.
|
||||
* New option --atime-preserve=system
|
||||
* New option --delay-directory-restore
|
||||
* New option --restrict prohibits use of some potentially harmful
|
||||
tar options.
|
||||
* New options --quoting-style and --quote-chars control the way
|
||||
tar quotes member names on output.
|
||||
* Better support for full-resolution time stamps.
|
||||
Incompatible changes:
|
||||
* tar no longer uses globbing by default
|
||||
- remove unused variable [#223847]
|
||||
- create man page via help2man
|
||||
- remove support for mangled names, due to security reasons
|
||||
CVE-2006-6097 [#223185]
|
||||
* Mon Jul 24 2006 rguenther@suse.de
|
||||
- Do not build-depend on rsh, but provide the RSH environment.
|
||||
* Mon Feb 27 2006 kssingvo@suse.de
|
||||
- fixed buffer overflow issue CVE-2006-0300 (bugzilla#151516)
|
||||
- not affected: traversal bug CVE-2005-1918 (bugzilla#145081)
|
||||
* Sat Feb 18 2006 aj@suse.de
|
||||
- Fix build.
|
||||
* Wed Jan 25 2006 mls@suse.de
|
||||
- converted neededforbuild to BuildRequires
|
||||
* Thu Sep 1 2005 mmj@suse.de
|
||||
- Add patch from upstream for fixing sparse files > 4GB [#114540]
|
||||
* Fri Jun 24 2005 schwab@suse.de
|
||||
- Fix broken test.
|
||||
* Fri Apr 8 2005 uli@suse.de
|
||||
- ignore test suite fails on ARM
|
||||
* Wed Mar 9 2005 mmj@suse.de
|
||||
- Make gcc4 happy
|
||||
* Tue Feb 1 2005 mmj@suse.de
|
||||
- Disable test that breaks on reiserfs due to that filesystems
|
||||
limitations. Tar works fine on reiserfs.
|
||||
* Tue Dec 21 2004 mmj@suse.de
|
||||
- Update to 1.15.1 which fixes a bug introduced in 1.15 which caused
|
||||
tar to refuse to extract files from standard input.
|
||||
* Tue Dec 21 2004 mmj@suse.de
|
||||
- Update to tar-1.15 including:
|
||||
- Features:
|
||||
o Compressed archives are recognised automatically, it is no
|
||||
longer necessary to specify -Z, -z, or -j options to read
|
||||
them. Thus, you can now run `tar tf archive.tar.gz'.
|
||||
o When restoring incremental dumps, --one-file-system option
|
||||
prevents directory hierarchies residing on different devices
|
||||
from being purged. With the previous versions of tar it was
|
||||
dangerous to create incremental dumps with --one-file-system
|
||||
option, since they would recursively remove mount points when
|
||||
restoring from the back up. This change fixes the bug.
|
||||
o Renamed --strip-path to --strip-components for consistency with
|
||||
the GNU convention.
|
||||
o Skipping archive members is sped up if the archive media supports
|
||||
seeks.
|
||||
o Restore script starts restoring only if it is given --all (-a)
|
||||
option, or some patterns. This is to prevent accidental restores.
|
||||
o `tar --verify' prints a warning if during archive creation some of
|
||||
the file names had their prefixes stripped off.
|
||||
o New option --exclude-caches instructs tar to exclude cache
|
||||
directories automatically on archive creation. Cache directories
|
||||
are those containing a standardized tag file, as specified at:
|
||||
http://www.brynosaurus.com/cachedir/spec.html
|
||||
o New configure option --with-rmt allows to specify full path
|
||||
name to the `rmt' utility. This supercedes DEFAULT_RMT_COMMAND
|
||||
variable introduced in version 1.14
|
||||
o New configure variable DEFAULT_RMT_DIR allows to specify the
|
||||
directory where to install `rmt' utility. This is necessary
|
||||
since modifying --libexecdir as was suggested for version 1.14
|
||||
produced a side effect: it also modified installation prefix
|
||||
for backup scripts (if --enable-backup-scripts was given).
|
||||
- Bugfixes:
|
||||
o Fixed flow in recognizing files to be included in incremental dumps.
|
||||
o Correctly recognize sparse archive members when used with -T option.
|
||||
o GNU multivolume headers cannot store filenames longer than
|
||||
100 characters. Do not allow multivolume archives to begin
|
||||
with such filenames.
|
||||
o If a member with link count > 2 was stored in the archive twice,
|
||||
previous versions of tar were not able to extract it, since they
|
||||
were trying to link the file to itself, which always failed and
|
||||
lead to removing the already extracted copy. Preserve the first
|
||||
extracted copy in such cases.
|
||||
o Restore script was passing improper argument to tar --listed
|
||||
option (which didn't affect the functionality, but was
|
||||
logically incorrect).
|
||||
o Fixed verification of created archives.
|
||||
o Fixed unquoting of file names containing backslash escapes (previous
|
||||
versions failed to recognize \a and \v).
|
||||
o When attempting to delete a non-existing member from the
|
||||
archive, previous versions of tar used to overwrite last
|
||||
archive block with zeroes.
|
||||
* Mon Aug 9 2004 mmj@suse.de
|
||||
- Add patch from snwint with long filename fix [#43538]
|
||||
* Sun May 30 2004 mmj@suse.de
|
||||
- Update to 1.14 which is the first stable release of tar
|
||||
since 1999.
|
||||
* Thu Apr 15 2004 mmj@suse.de
|
||||
- Fix detection of remote paths [#38709]. Thanks Jürgen!
|
||||
* Tue Apr 13 2004 mmj@suse.de
|
||||
- Update to 1.13.94 including fix for [#16531]
|
||||
* Sat Jan 10 2004 adrian@suse.de
|
||||
- build as user
|
||||
* Fri Jun 20 2003 ro@suse.de
|
||||
- build with current gettext
|
||||
* Thu May 15 2003 pthomas@suse.de
|
||||
- Remove unneeded files from build root.
|
||||
- Add autoconf tests to properly guard K&R prototypes
|
||||
- Clean up signed/unsigned compares.
|
||||
* Thu Apr 24 2003 ro@suse.de
|
||||
- fix install_info --delete call and move from preun to postun
|
||||
* Fri Feb 7 2003 ro@suse.de
|
||||
- added install_info macros
|
||||
* Mon Nov 18 2002 ro@suse.de
|
||||
- add AM_GNU_GETTEXT_VERSION to configure.ac
|
||||
* Thu Aug 1 2002 ro@suse.de
|
||||
- add acinclude.m4 with missing macros
|
||||
* Tue Jun 4 2002 pthomas@suse.de
|
||||
- Make tar a package of its own.
|
||||
- Update to tar-1.13.25.
|
||||
- Make tar man page a seperate file instead of part of the patch.
|
||||
- Patch de.po to reflect the addition of the --bunzip2 parameter
|
||||
- Use AC_LIBOBJ instead of LIBOBJS
|
||||
* Wed May 22 2002 olh@suse.de
|
||||
- allow build as user, use buildroot
|
||||
* Fri Feb 8 2002 werner@suse.de
|
||||
- Fix bug #12797: back to builtin behaviour, the widly used -I for
|
||||
bunzip2 can be reenabled with the environment var TAROLDOPT4BZIP2
|
||||
* Mon Dec 17 2001 werner@suse.de
|
||||
- draht@suse.de: package rsh is needed for build of tar(1) to
|
||||
enable rsh remote command execution.
|
||||
two successive execl() calls to /usr/bin/rsh with different
|
||||
args/remote commands do not make sense since the first execl() is
|
||||
successful if /usr/bin/rsh exists. Check for existence of /etc/rmt
|
||||
on the remote side and execute it, else exec /sbin/rmt . (#12605)
|
||||
- Use one contstant string for command line
|
||||
* Tue Nov 20 2001 werner@suse.de
|
||||
- Add rsh to needeforbuild to be sure that remote shell for remote
|
||||
backup will be found.
|
||||
* Wed Aug 1 2001 werner@suse.de
|
||||
- Make /etc/rmt versus /sbin/rmt switch dynamic.
|
||||
* Tue Mar 27 2001 werner@suse.de
|
||||
- Fix man page of tar (#6741)
|
||||
* Thu Dec 14 2000 werner@suse.de
|
||||
- Update to tar 1.13.18
|
||||
* should avoid some crashes
|
||||
* avoid exclude file list problem
|
||||
* Fri Nov 26 1999 kukuk@suse.de
|
||||
- Add tar.1 to file list
|
||||
- Remove obsolete entries from file list
|
||||
- Build tar with locale support
|
234
tar.keyring
Normal file
234
tar.keyring
Normal file
|
@ -0,0 +1,234 @@
|
|||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: SKS 1.1.0
|
||||
|
||||
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
|
||||
mTibFyT3vk9Qs6TyOr9mosa+dA==
|
||||
=mQUf
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
237
tar.spec
Normal file
237
tar.spec
Normal file
|
@ -0,0 +1,237 @@
|
|||
#
|
||||
# spec file for package tar
|
||||
#
|
||||
# Copyright (c) 2022-2023 ZhuningOS
|
||||
#
|
||||
|
||||
|
||||
# For correct subpackages docs installation into tar doc directory
|
||||
%global _docdir_fmt %{name}
|
||||
Name: tar
|
||||
Version: 1.34
|
||||
Release: 150000.3.34.1
|
||||
Summary: GNU implementation of ((t)ape (ar)chiver)
|
||||
License: GPL-3.0-or-later
|
||||
Group: Productivity/Archiving/Backup
|
||||
URL: https://www.gnu.org/software/tar/
|
||||
Source0: https://ftp.gnu.org/gnu/tar/%{name}-%{version}.tar.xz
|
||||
Source1: https://ftp.gnu.org/gnu/tar/%{name}-%{version}.tar.xz.sig
|
||||
# http://wwwkeys.pgp.net:11371/pks/lookup?op=get&search=0x3602B07F55D0C732
|
||||
Source2: %{name}.keyring
|
||||
Patch0: %{name}-wildcards.patch
|
||||
Patch1: %{name}-backup-spec-fix-paths.patch
|
||||
Patch2: paxutils-rtapelib_mtget.patch
|
||||
# don't print warning about zero blocks
|
||||
# the patch is used in Fedora and Debian
|
||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=235820
|
||||
Patch3: %{name}-ignore_lone_zero_blocks.patch
|
||||
# The next patch is disabled because it causes a regression:
|
||||
#https://bugzilla.opensuse.org/show_bug.cgi?id=918487
|
||||
Patch4: %{name}-recursive--files-from.patch
|
||||
Patch5: add_readme-tests.patch
|
||||
Patch6: tar-PIE.patch
|
||||
Patch7: tests-skip-time01-on-32bit-time_t.patch
|
||||
# PATCH-FIX-UPSTREAM danilo.spinella@suse.com bsc#1200657
|
||||
# fix race condition while creating intermediate subdirectories
|
||||
Patch8: tar-fix-race-condition.patch
|
||||
# PATCH-FIX-UPSTREAM danilo.spinella@suse.com bsc#1203600
|
||||
# Unexpected inconsistency when making directory
|
||||
Patch9: tar-avoid-overflow-in-symlinks-tests.patch
|
||||
Patch10: bsc1200657.patch
|
||||
Patch11: tar-fix-extract-unlink.patch
|
||||
# PATCH-FIX-SUSE danilo.spinella@suse.czom bsc#1202436
|
||||
# Error out when trying to create '.' directory instead of hanging
|
||||
Patch12: bsc1202436.patch
|
||||
# PATCH-FIX-UPSTREAM danilo.spinella@suse.com bsc#1202436
|
||||
Patch13: bsc1202436-1.patch
|
||||
Patch14: bsc1202436-2.patch
|
||||
# PATCH-FIX-UPSTREAM danilo.spinella@suse.com bsc#1207753
|
||||
# tar has a one-byte out-of-bounds read that results in use of
|
||||
# uninitialized memory for a conditional jump
|
||||
Patch15: fix-CVE-2022-48303.patch
|
||||
# PATCH-FIX-UPSTREAM danilo.spinella@suse.com bsc#1217969
|
||||
# Incorrectly handled extension attributes in PAX archives can lead to a crash
|
||||
Patch16: fix-CVE-2023-39804.patch
|
||||
BuildRequires: automake >= 1.15
|
||||
BuildRequires: libacl-devel
|
||||
BuildRequires: libselinux-devel
|
||||
Recommends: %{name}-rmt = %{version}
|
||||
Recommends: mt
|
||||
Recommends: xz
|
||||
Provides: base:/bin/tar
|
||||
|
||||
%description
|
||||
GNU Tar is an archiver program. It is used to create and manipulate files
|
||||
that are actually collections of many other files; the program provides
|
||||
users with an organized and systematic method of controlling a large amount
|
||||
of data. Despite its name, that is an acronym of "tape archiver", GNU Tar
|
||||
is able to direct its output to any available devices, files or other programs,
|
||||
it may as well access remote devices or files.
|
||||
|
||||
%package backup-scripts
|
||||
Summary: Backup scripts
|
||||
Group: Productivity/Archiving/Backup
|
||||
Requires: %{name} = %{version}
|
||||
BuildArch: noarch
|
||||
|
||||
%description backup-scripts
|
||||
Shell scripts for system backup/restore
|
||||
|
||||
%package tests
|
||||
Summary: Tests for the package
|
||||
Group: Development/Tools/Other
|
||||
Requires: %{name} = %{version}
|
||||
|
||||
%description tests
|
||||
Upstream testsuite for the package
|
||||
|
||||
%package rmt
|
||||
Summary: Remote tape drive control server by GNU
|
||||
Group: Productivity/Archiving/Backup
|
||||
Requires(post): update-alternatives
|
||||
Requires(postun):update-alternatives
|
||||
Provides: rmt
|
||||
|
||||
%description rmt
|
||||
Provides remote access to files and devices for tar, cpio
|
||||
and similar backup utilities
|
||||
|
||||
%package doc
|
||||
Summary: Documentation files for GNU tar
|
||||
Group: Documentation/Man
|
||||
Requires: %{name} = %{version}
|
||||
BuildArch: noarch
|
||||
|
||||
%description doc
|
||||
GNU Tar is an archiver program. It is used to create and manipulate files
|
||||
that are actually collections of many other files; the program provides
|
||||
users with an organized and systematic method of controlling a large amount
|
||||
of data. Despite its name, that is an acronym of "tape archiver", GNU Tar
|
||||
is able to direct its output to any available devices, files or other programs,
|
||||
it may as well access remote devices or files.
|
||||
|
||||
%lang_package
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1
|
||||
%patch1 -p1
|
||||
%patch2 -p1
|
||||
%patch3 -p1
|
||||
#%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6 -p1
|
||||
%patch7 -p1
|
||||
%patch8 -p1
|
||||
%patch9 -p1
|
||||
%patch10 -p1
|
||||
%patch11 -p1
|
||||
%patch12 -p1
|
||||
%patch13 -p1
|
||||
%patch14 -p1
|
||||
%patch15 -p1
|
||||
%patch16 -p1
|
||||
|
||||
%build
|
||||
%define my_cflags -W -Wall -Wpointer-arith -Wstrict-prototypes -Wformat-security -Wno-unused-parameter -fPIE
|
||||
export CFLAGS="%{optflags} %{my_cflags}"
|
||||
export RSH=%{_bindir}/ssh
|
||||
export DEFAULT_ARCHIVE_FORMAT="POSIX"
|
||||
export DEFAULT_RMT_DIR=%{_bindir}
|
||||
autoreconf -fi
|
||||
%configure \
|
||||
gl_cv_func_linkat_follow="yes" \
|
||||
--enable-backup-scripts \
|
||||
--disable-silent-rules \
|
||||
--program-transform-name='s/^rmt$/gnurmt/'
|
||||
%make_build LDFLAGS="-pie"
|
||||
cd tests
|
||||
%make_build genfile
|
||||
mkdir bin
|
||||
mv genfile bin
|
||||
cd -
|
||||
|
||||
%check
|
||||
%if !0%{?qemu_user_space_build:1}
|
||||
# Checks disabled in qemu because of races happening when we emulate
|
||||
# multi-threaded programs
|
||||
%make_build check || { cat tests/testsuite.log; exit 1; }
|
||||
%endif
|
||||
|
||||
%install
|
||||
%make_install DESTDIR=%{buildroot}
|
||||
mkdir %{buildroot}/bin
|
||||
mv %{buildroot}%{_mandir}/man8/gnurmt.8 %{buildroot}%{_mandir}/man1/gnurmt.1
|
||||
install -D -m 644 scripts/backup-specs %{buildroot}%{_sysconfdir}/backup/backup-specs
|
||||
# For avoiding file conflicts with dump/restore
|
||||
mv %{buildroot}%{_sbindir}/restore %{buildroot}%{_sbindir}/restore.sh
|
||||
rm -f %{buildroot}%{_infodir}/dir
|
||||
install -D -m 644 -t %{buildroot}%{_docdir}/%{name} README* ABOUT-NLS AUTHORS NEWS THANKS \
|
||||
ChangeLog TODO
|
||||
install -d -m 755 %{buildroot}%{_localstatedir}/lib/tests
|
||||
cp -r tests %{buildroot}%{_localstatedir}/lib/tests/tar
|
||||
rm %{buildroot}%{_localstatedir}/lib/tests/tar/*.{c,h,o}
|
||||
rm %{buildroot}%{_localstatedir}/lib/tests/tar/package.m4
|
||||
rm %{buildroot}%{_localstatedir}/lib/tests/tar/{atconfig,atlocal,Makefile}*
|
||||
# Alternatives system
|
||||
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
|
||||
ln -sf %{_sysconfdir}/alternatives/rmt %{buildroot}%{_bindir}/rmt
|
||||
ln -sf %{_sysconfdir}/alternatives/rmt.1%{ext_man} %{buildroot}%{_mandir}/man1/rmt.1%{ext_man}
|
||||
%if !0%{?usrmerged}
|
||||
mkdir -p %{buildroot}/bin
|
||||
ln -s %{_bindir}/%{name} %{buildroot}/bin
|
||||
%endif
|
||||
%find_lang %{name}
|
||||
|
||||
%post rmt
|
||||
%{_sbindir}/update-alternatives --force \
|
||||
--install %{_bindir}/rmt rmt %{_bindir}/gnurmt 10 \
|
||||
--slave %{_mandir}/man1/rmt.1%{ext_man} rmt.1%{ext_man} %{_mandir}/man1/gnurmt.1%{ext_man}
|
||||
|
||||
%postun rmt
|
||||
if [ ! -f %{_bindir}/gnurmt ] ; then
|
||||
"%{_sbindir}/update-alternatives" --remove rmt %{_bindir}/gnurmt
|
||||
fi
|
||||
|
||||
%files backup-scripts
|
||||
%{_sbindir}/backup
|
||||
%{_sbindir}/restore.sh
|
||||
%{_libexecdir}/backup.sh
|
||||
%{_libexecdir}/dump-remind
|
||||
%dir %{_sysconfdir}/backup
|
||||
%config(noreplace) %{_sysconfdir}/backup/backup-specs
|
||||
|
||||
%files lang -f %{name}.lang
|
||||
|
||||
%files tests
|
||||
%{_localstatedir}/lib/tests
|
||||
%{_docdir}/%{name}/README-tests
|
||||
|
||||
%files rmt
|
||||
%ghost %{_bindir}/rmt
|
||||
%{_bindir}/gnurmt
|
||||
%ghost %{_mandir}/man1/rmt.1%{ext_man}
|
||||
%{_mandir}/man1/gnurmt.1%{?ext_man}
|
||||
%ghost %{_sysconfdir}/alternatives/rmt
|
||||
%ghost %{_sysconfdir}/alternatives/rmt.1%{ext_man}
|
||||
|
||||
%files doc
|
||||
%dir %{_docdir}/%{name}
|
||||
%{_docdir}/%{name}/NEWS
|
||||
%{_docdir}/%{name}/README
|
||||
%{_docdir}/%{name}/ABOUT-NLS
|
||||
%{_docdir}/%{name}/AUTHORS
|
||||
%{_docdir}/%{name}/THANKS
|
||||
%{_docdir}/%{name}/ChangeLog
|
||||
%{_docdir}/%{name}/TODO
|
||||
%{_infodir}/%{name}.info*%{?ext_info}
|
||||
|
||||
%files
|
||||
%license COPYING
|
||||
%if !0%{?usrmerged}
|
||||
/bin/%{name}
|
||||
%endif
|
||||
%{_bindir}/%{name}
|
||||
%{_mandir}/man1/%{name}.1%{?ext_man}
|
||||
|
||||
%changelog
|
36
tests-skip-time01-on-32bit-time_t.patch
Normal file
36
tests-skip-time01-on-32bit-time_t.patch
Normal file
|
@ -0,0 +1,36 @@
|
|||
Skip some parts of 'tests/time01.at' on some platforms.
|
||||
|
||||
This test fails if coreutils' touch was built with 64-bit time_t,
|
||||
while tar was built with 32-bit time_t. This is currently the case
|
||||
on i586, ppc and armv7l. Skip the failing last command on those
|
||||
platforms.
|
||||
|
||||
The failure was seen since coreutils-9.0.
|
||||
|
||||
Discussed at:
|
||||
https://lists.gnu.org/r/bug-tar/2021-10/msg00006.html
|
||||
|
||||
Remove this patch once tar(1) also builds with 64-bit time_t.
|
||||
---
|
||||
tests/time01.at | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
Index: tar-1.34/tests/time01.at
|
||||
===================================================================
|
||||
--- tar-1.34.orig/tests/time01.at
|
||||
+++ tar-1.34/tests/time01.at
|
||||
@@ -61,6 +61,14 @@ do
|
||||
done
|
||||
|
||||
tar -c -f archive.tar dir
|
||||
+
|
||||
+case "$( uname -m )" in
|
||||
+ i686 | ppc | armv7l)
|
||||
+ # "SUSE: disabled for now on platforms with 32-bit time_t"
|
||||
+ AT_SKIP_TEST
|
||||
+ ;;
|
||||
+esac
|
||||
+
|
||||
tar -d -f archive.tar dir
|
||||
],
|
||||
[0],
|
Loading…
Add table
Reference in a new issue