From 9daa877d6bdc8dd470ffd86839550c54957eac73 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 1 Jan 2021 13:34:25 +0100 Subject: tar: add TODO about a bug with non-writable directories on extract Signed-off-by: Denys Vlasenko --- archival/libarchive/data_extract_all.c | 4 ++++ scripts/bb_release | 1 + 2 files changed, 5 insertions(+) diff --git a/archival/libarchive/data_extract_all.c b/archival/libarchive/data_extract_all.c index 3142405a3..049c2c156 100644 --- a/archival/libarchive/data_extract_all.c +++ b/archival/libarchive/data_extract_all.c @@ -159,6 +159,10 @@ void FAST_FUNC data_extract_all(archive_handle_t *archive_handle) break; } case S_IFDIR: +//TODO: this causes problems if tarball contains a r-xr-xr-x directory: +// we create this directory, and then fail to create files inside it +// (if tar xf isn't run as root). +// GNU tar works around this by chmod-ing directories *after* all files are extracted. res = mkdir(dst_name, file_header->mode); if ((res != 0) && (errno != EISDIR) /* btw, Linux doesn't return this */ diff --git a/scripts/bb_release b/scripts/bb_release index 2e146bf84..545440d3a 100755 --- a/scripts/bb_release +++ b/scripts/bb_release @@ -8,6 +8,7 @@ #svn co svn://busybox.net/trunk/busybox cd busybox || { echo "cd busybox failed"; exit 1; } +chmod -Rc u+w,a+rX,go-w . make release || { echo "make release failed"; exit 1; } cd .. -- cgit v1.2.3