From 328cef71af8309be94586557819bb1c5d0c65c0c Mon Sep 17 00:00:00 2001 From: Simon Quigley Date: Mon, 10 Feb 2025 17:07:22 -0600 Subject: [PATCH] Don't follow symlinks infinitely --- cpp/tar_common.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/cpp/tar_common.cpp b/cpp/tar_common.cpp index 7446e58..a409c1f 100644 --- a/cpp/tar_common.cpp +++ b/cpp/tar_common.cpp @@ -118,8 +118,7 @@ void create_tarball(const std::string &tarball_path, std::unordered_set added_directories; // Now iterate recursively through the source directory. - for (auto it = fs::recursive_directory_iterator(directory, - fs::directory_options::skip_permission_denied | fs::directory_options::follow_directory_symlink); + for (auto it = fs::recursive_directory_iterator(directory, fs::directory_options::skip_permission_denied); it != fs::recursive_directory_iterator(); ++it) { const auto& path = it->path(); @@ -166,6 +165,8 @@ void create_tarball(const std::string &tarball_path, const auto target = fs::read_symlink(path, ec); if (!ec) archive_entry_set_symlink(entry, target.c_str()); archive_entry_set_filetype(entry, AE_IFLNK); + archive_entry_set_size(entry, 0); + archive_entry_set_perm(entry, 0777); } // Set permissions and ownership