summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-arch/tar/files/tar-1.24-transform.patch')
-rw-r--r--app-arch/tar/files/tar-1.24-transform.patch173
1 files changed, 0 insertions, 173 deletions
diff --git a/app-arch/tar/files/tar-1.24-transform.patch b/app-arch/tar/files/tar-1.24-transform.patch
deleted file mode 100644
index b6638adc9b2b..000000000000
--- a/app-arch/tar/files/tar-1.24-transform.patch
+++ /dev/null
@@ -1,173 +0,0 @@
-From 28e91b48f680a6fab90ee39145123647345f385f Mon Sep 17 00:00:00 2001
-From: Sergey Poznyakoff <gray@gnu.org.ua>
-Date: Tue, 26 Oct 2010 14:47:16 +0000
-Subject: Make sure name matching occurs before name transformation.
-
-The commit 9c194c99 altered that order.
-
-* src/list.c (transform_stat_info): New function. Split off from
-decode_header.
-(read_and): Call transform_stat_info right before do_something,
-and after deciding if we should proceed with this member name,
-so that name matching occurs before name transformation.
-
-* tests/extrac17.at: New file.
-* tests/Makefile.am (TESTSUITE_AT): Add extrac17.at
-* tests/testsuite.at: Include extrac17.at.
----
-diff --git a/src/list.c b/src/list.c
-index d15653d..e1e06ca 100644
---- a/src/list.c
-+++ b/src/list.c
-@@ -75,6 +75,66 @@ base64_init (void)
- base64_map[(int) base_64_digits[i]] = i;
- }
-
-+static char *
-+decode_xform (char *file_name, void *data)
-+{
-+ int type = *(int*)data;
-+
-+ switch (type)
-+ {
-+ case XFORM_SYMLINK:
-+ /* FIXME: It is not quite clear how and to which extent are the symbolic
-+ links subject to filename transformation. In the absence of another
-+ solution, symbolic links are exempt from component stripping and
-+ name suffix normalization, but subject to filename transformation
-+ proper. */
-+ return file_name;
-+
-+ case XFORM_LINK:
-+ file_name = safer_name_suffix (file_name, true, absolute_names_option);
-+ break;
-+
-+ case XFORM_REGFILE:
-+ file_name = safer_name_suffix (file_name, false, absolute_names_option);
-+ break;
-+ }
-+
-+ if (strip_name_components)
-+ {
-+ size_t prefix_len = stripped_prefix_len (file_name,
-+ strip_name_components);
-+ if (prefix_len == (size_t) -1)
-+ prefix_len = strlen (file_name);
-+ file_name += prefix_len;
-+ }
-+ return file_name;
-+}
-+
-+static bool
-+transform_member_name (char **pinput, int type)
-+{
-+ return transform_name_fp (pinput, type, decode_xform, &type);
-+}
-+
-+static void
-+transform_stat_info (int typeflag, struct tar_stat_info *stat_info)
-+{
-+ if (typeflag == GNUTYPE_VOLHDR)
-+ /* Name transformations don't apply to volume headers. */
-+ return;
-+
-+ transform_member_name (&stat_info->file_name, XFORM_REGFILE);
-+ switch (typeflag)
-+ {
-+ case SYMTYPE:
-+ transform_member_name (&stat_info->link_name, XFORM_SYMLINK);
-+ break;
-+
-+ case LNKTYPE:
-+ transform_member_name (&stat_info->link_name, XFORM_LINK);
-+ }
-+}
-+
- /* Main loop for reading an archive. */
- void
- read_and (void (*do_something) (void))
-@@ -135,7 +195,8 @@ read_and (void (*do_something) (void))
- continue;
- }
- }
--
-+ transform_stat_info (current_header->header.typeflag,
-+ &current_stat_info);
- (*do_something) ();
- continue;
-
-@@ -495,47 +556,6 @@ read_header (union block **return_block, struct tar_stat_info *info,
- }
- }
-
--static char *
--decode_xform (char *file_name, void *data)
--{
-- int type = *(int*)data;
--
-- switch (type)
-- {
-- case XFORM_SYMLINK:
-- /* FIXME: It is not quite clear how and to which extent are the symbolic
-- links subject to filename transformation. In the absence of another
-- solution, symbolic links are exempt from component stripping and
-- name suffix normalization, but subject to filename transformation
-- proper. */
-- return file_name;
--
-- case XFORM_LINK:
-- file_name = safer_name_suffix (file_name, true, absolute_names_option);
-- break;
--
-- case XFORM_REGFILE:
-- file_name = safer_name_suffix (file_name, false, absolute_names_option);
-- break;
-- }
--
-- if (strip_name_components)
-- {
-- size_t prefix_len = stripped_prefix_len (file_name,
-- strip_name_components);
-- if (prefix_len == (size_t) -1)
-- prefix_len = strlen (file_name);
-- file_name += prefix_len;
-- }
-- return file_name;
--}
--
--static bool
--transform_member_name (char **pinput, int type)
--{
-- return transform_name_fp (pinput, type, decode_xform, &type);
--}
--
- #define ISOCTAL(c) ((c)>='0'&&(c)<='7')
-
- /* Decode things from a file HEADER block into STAT_INFO, also setting
-@@ -655,23 +675,9 @@ decode_header (union block *header, struct tar_stat_info *stat_info,
- || stat_info->dumpdir)
- stat_info->is_dumpdir = true;
- }
--
-- if (header->header.typeflag == GNUTYPE_VOLHDR)
-- /* Name transformations don't apply to volume headers. */
-- return;
--
-- transform_member_name (&stat_info->file_name, XFORM_REGFILE);
-- switch (header->header.typeflag)
-- {
-- case SYMTYPE:
-- transform_member_name (&stat_info->link_name, XFORM_SYMLINK);
-- break;
--
-- case LNKTYPE:
-- transform_member_name (&stat_info->link_name, XFORM_LINK);
-- }
- }
-
-+
- /* Convert buffer at WHERE0 of size DIGS from external format to
- uintmax_t. DIGS must be positive. If TYPE is nonnull, the data
- are of type TYPE. The buffer must represent a value in the range
---
-cgit v0.8.3.2