summaryrefslogtreecommitdiffstats
path: root/meta/recipes-extended/libarchive/files/0001-archive_write_disk_posix.c-make-_fsobj-functions-mor.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-extended/libarchive/files/0001-archive_write_disk_posix.c-make-_fsobj-functions-mor.patch')
-rw-r--r--meta/recipes-extended/libarchive/files/0001-archive_write_disk_posix.c-make-_fsobj-functions-mor.patch245
1 files changed, 0 insertions, 245 deletions
diff --git a/meta/recipes-extended/libarchive/files/0001-archive_write_disk_posix.c-make-_fsobj-functions-mor.patch b/meta/recipes-extended/libarchive/files/0001-archive_write_disk_posix.c-make-_fsobj-functions-mor.patch
deleted file mode 100644
index e911a7c1f2..0000000000
--- a/meta/recipes-extended/libarchive/files/0001-archive_write_disk_posix.c-make-_fsobj-functions-mor.patch
+++ /dev/null
@@ -1,245 +0,0 @@
-From 90881d24d3f6d5fb207e97df3b91bbea8598e84e Mon Sep 17 00:00:00 2001
-From: Martin Matuska <martin@matuska.org>
-Date: Tue, 29 Nov 2016 16:47:37 +0100
-Subject: [PATCH 1/2] archive_write_disk_posix.c: make *_fsobj functions more
- readable
-
-Upstream-Status: Backported
-
-Signed-off-by: Amarnath Valluri <amarnath.valluri@intel.com>
----
- libarchive/archive_write_disk_posix.c | 121 +++++++++++++++++-----------------
- 1 file changed, 61 insertions(+), 60 deletions(-)
-
-diff --git a/libarchive/archive_write_disk_posix.c b/libarchive/archive_write_disk_posix.c
-index 17c23b0..d786bc2 100644
---- a/libarchive/archive_write_disk_posix.c
-+++ b/libarchive/archive_write_disk_posix.c
-@@ -336,6 +336,8 @@ struct archive_write_disk {
-
- #define HFS_BLOCKS(s) ((s) >> 12)
-
-+static void fsobj_error(int *, struct archive_string *, int, const char *,
-+ const char *);
- static int check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags);
- static int check_symlinks(struct archive_write_disk *);
- static int create_filesystem_object(struct archive_write_disk *);
-@@ -2005,8 +2007,9 @@ restore_entry(struct archive_write_disk *a)
-
- if (en) {
- /* Everything failed; give up here. */
-- archive_set_error(&a->archive, en, "Can't create '%s'",
-- a->name);
-+ if ((&a->archive)->error == NULL)
-+ archive_set_error(&a->archive, en, "Can't create '%s'",
-+ a->name);
- return (ARCHIVE_FAILED);
- }
-
-@@ -2388,6 +2391,17 @@ current_fixup(struct archive_write_disk *a, const char *pathname)
- return (a->current_fixup);
- }
-
-+/* Error helper for new *_fsobj functions */
-+static void
-+fsobj_error(int *a_eno, struct archive_string *a_estr,
-+ int err, const char *errstr, const char *path)
-+{
-+ if (a_eno)
-+ *a_eno = err;
-+ if (a_estr)
-+ archive_string_sprintf(a_estr, errstr, path);
-+}
-+
- /*
- * TODO: Someday, integrate this with the deep dir support; they both
- * scan the path and both can be optimized by comparing against other
-@@ -2400,7 +2414,7 @@ current_fixup(struct archive_write_disk *a, const char *pathname)
- * ARCHIVE_OK if there are none, otherwise puts an error in errmsg.
- */
- static int
--check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags)
-+check_symlinks_fsobj(char *path, int *a_eno, struct archive_string *a_estr, int flags)
- {
- #if !defined(HAVE_LSTAT)
- /* Platform doesn't have lstat, so we can't look for symlinks. */
-@@ -2474,19 +2488,20 @@ check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error
- if (errno == ENOENT) {
- break;
- } else {
-- /* Treat any other error as fatal - best to be paranoid here
-- * Note: This effectively disables deep directory
-- * support when security checks are enabled.
-- * Otherwise, very long pathnames that trigger
-- * an error here could evade the sandbox.
-- * TODO: We could do better, but it would probably
-- * require merging the symlink checks with the
-- * deep-directory editing. */
-- if (error_number) *error_number = errno;
-- if (error_string)
-- archive_string_sprintf(error_string,
-- "Could not stat %s",
-- path);
-+ /*
-+ * Treat any other error as fatal - best to be
-+ * paranoid here.
-+ * Note: This effectively disables deep
-+ * directory support when security checks are
-+ * enabled. Otherwise, very long pathnames that
-+ * trigger an error here could evade the
-+ * sandbox.
-+ * TODO: We could do better, but it would
-+ * probably require merging the symlink checks
-+ * with the deep-directory editing.
-+ */
-+ fsobj_error(a_eno, a_estr, errno,
-+ "Could not stat %s", path);
- res = ARCHIVE_FAILED;
- break;
- }
-@@ -2494,11 +2509,8 @@ check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error
- if (!last) {
- if (chdir(head) != 0) {
- tail[0] = c;
-- if (error_number) *error_number = errno;
-- if (error_string)
-- archive_string_sprintf(error_string,
-- "Could not chdir %s",
-- path);
-+ fsobj_error(a_eno, a_estr, errno,
-+ "Could not chdir %s", path);
- res = (ARCHIVE_FATAL);
- break;
- }
-@@ -2514,11 +2526,9 @@ check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error
- */
- if (unlink(head)) {
- tail[0] = c;
-- if (error_number) *error_number = errno;
-- if (error_string)
-- archive_string_sprintf(error_string,
-- "Could not remove symlink %s",
-- path);
-+ fsobj_error(a_eno, a_estr, errno,
-+ "Could not remove symlink %s",
-+ path);
- res = ARCHIVE_FAILED;
- break;
- }
-@@ -2529,13 +2539,14 @@ check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error
- * symlink with another symlink.
- */
- tail[0] = c;
-- /* FIXME: not sure how important this is to restore
-+ /*
-+ * FIXME: not sure how important this is to
-+ * restore
-+ */
-+ /*
- if (!S_ISLNK(path)) {
-- if (error_number) *error_number = 0;
-- if (error_string)
-- archive_string_sprintf(error_string,
-- "Removing symlink %s",
-- path);
-+ fsobj_error(a_eno, a_estr, 0,
-+ "Removing symlink %s", path);
- }
- */
- /* Symlink gone. No more problem! */
-@@ -2545,22 +2556,17 @@ check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error
- /* User asked us to remove problems. */
- if (unlink(head) != 0) {
- tail[0] = c;
-- if (error_number) *error_number = 0;
-- if (error_string)
-- archive_string_sprintf(error_string,
-- "Cannot remove intervening symlink %s",
-- path);
-+ fsobj_error(a_eno, a_estr, 0,
-+ "Cannot remove intervening "
-+ "symlink %s", path);
- res = ARCHIVE_FAILED;
- break;
- }
- tail[0] = c;
- } else {
- tail[0] = c;
-- if (error_number) *error_number = 0;
-- if (error_string)
-- archive_string_sprintf(error_string,
-- "Cannot extract through symlink %s",
-- path);
-+ fsobj_error(a_eno, a_estr, 0,
-+ "Cannot extract through symlink %s", path);
- res = ARCHIVE_FAILED;
- break;
- }
-@@ -2577,10 +2583,8 @@ check_symlinks_fsobj(char *path, int *error_number, struct archive_string *error
- if (restore_pwd >= 0) {
- r = fchdir(restore_pwd);
- if (r != 0) {
-- if(error_number) *error_number = errno;
-- if(error_string)
-- archive_string_sprintf(error_string,
-- "chdir() failure");
-+ fsobj_error(a_eno, a_estr, errno,
-+ "chdir() failure", "");
- }
- close(restore_pwd);
- restore_pwd = -1;
-@@ -2688,17 +2692,16 @@ cleanup_pathname_win(struct archive_write_disk *a)
- * is set) if the path is absolute.
- */
- static int
--cleanup_pathname_fsobj(char *path, int *error_number, struct archive_string *error_string, int flags)
-+cleanup_pathname_fsobj(char *path, int *a_eno, struct archive_string *a_estr,
-+ int flags)
- {
- char *dest, *src;
- char separator = '\0';
-
- dest = src = path;
- if (*src == '\0') {
-- if (error_number) *error_number = ARCHIVE_ERRNO_MISC;
-- if (error_string)
-- archive_string_sprintf(error_string,
-- "Invalid empty pathname");
-+ fsobj_error(a_eno, a_estr, ARCHIVE_ERRNO_MISC,
-+ "Invalid empty ", "pathname");
- return (ARCHIVE_FAILED);
- }
-
-@@ -2708,10 +2711,8 @@ cleanup_pathname_fsobj(char *path, int *error_number, struct archive_string *err
- /* Skip leading '/'. */
- if (*src == '/') {
- if (flags & ARCHIVE_EXTRACT_SECURE_NOABSOLUTEPATHS) {
-- if (error_number) *error_number = ARCHIVE_ERRNO_MISC;
-- if (error_string)
-- archive_string_sprintf(error_string,
-- "Path is absolute");
-+ fsobj_error(a_eno, a_estr, ARCHIVE_ERRNO_MISC,
-+ "Path is ", "absolute");
- return (ARCHIVE_FAILED);
- }
-
-@@ -2738,11 +2739,11 @@ cleanup_pathname_fsobj(char *path, int *error_number, struct archive_string *err
- } else if (src[1] == '.') {
- if (src[2] == '/' || src[2] == '\0') {
- /* Conditionally warn about '..' */
-- if (flags & ARCHIVE_EXTRACT_SECURE_NODOTDOT) {
-- if (error_number) *error_number = ARCHIVE_ERRNO_MISC;
-- if (error_string)
-- archive_string_sprintf(error_string,
-- "Path contains '..'");
-+ if (flags
-+ & ARCHIVE_EXTRACT_SECURE_NODOTDOT) {
-+ fsobj_error(a_eno, a_estr,
-+ ARCHIVE_ERRNO_MISC,
-+ "Path contains ", "'..'");
- return (ARCHIVE_FAILED);
- }
- }
---
-2.7.4
-