1
0
Fork 0

Fix #6377: two tarballs with the same folder in them were considered as one (#11855)

pull/11750/head
Patric Stout 2024-01-21 19:06:58 +01:00 committed by GitHub
parent 6588680ccc
commit 0c81579363
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 5 additions and 2 deletions

View File

@ -529,6 +529,9 @@ bool TarScanner::AddFile(const std::string &filename, size_t, [[maybe_unused]] c
_tar_list[this->subdir][filename] = std::string{}; _tar_list[this->subdir][filename] = std::string{};
std::string filename_base = std::filesystem::path(filename).filename().string();
SimplifyFileName(filename_base);
TarLinkList links; ///< Temporary list to collect links TarLinkList links; ///< Temporary list to collect links
TarHeader th; TarHeader th;
@ -583,7 +586,7 @@ bool TarScanner::AddFile(const std::string &filename, size_t, [[maybe_unused]] c
SimplifyFileName(name); SimplifyFileName(name);
Debug(misc, 6, "Found file in tar: {} ({} bytes, {} offset)", name, skip, pos); Debug(misc, 6, "Found file in tar: {} ({} bytes, {} offset)", name, skip, pos);
if (_tar_filelist[this->subdir].insert(TarFileList::value_type(name, entry)).second) num++; if (_tar_filelist[this->subdir].insert(TarFileList::value_type(filename_base + PATHSEPCHAR + name, entry)).second) num++;
break; break;
} }
@ -615,7 +618,7 @@ bool TarScanner::AddFile(const std::string &filename, size_t, [[maybe_unused]] c
/* Store links in temporary list */ /* Store links in temporary list */
Debug(misc, 6, "Found link in tar: {} -> {}", name, dest); Debug(misc, 6, "Found link in tar: {} -> {}", name, dest);
links.insert(TarLinkList::value_type(name, dest)); links.insert(TarLinkList::value_type(filename_base + PATHSEPCHAR + name, filename_base + PATHSEPCHAR + dest));
break; break;
} }