Merge pull request #2740 from dunhor/gnutar_longpath_unicode

Check WCS pathname in header_gnutar before overwriting

(cherry picked from commit fda50c79ba)
This commit is contained in:
Tim Kientzle authored and Martin Matuska committed 2025-10-11 22:07:36 +02:00
1 parent 94817fa277
commit 400abd1d7f
1 file changed
+3 -1
+3 -1
View File
@@ -2940,7 +2940,9 @@ header_gnutar(struct archive_read *a, struct tar *tar,
/* Copy filename over (to ensure null termination). */
header = (const struct archive_entry_header_gnutar *)h;
const char *existing_pathname = archive_entry_pathname(entry);
if (existing_pathname == NULL || existing_pathname[0] == '\0') {
const wchar_t *existing_wcs_pathname = archive_entry_pathname_w(entry);
if ((existing_pathname == NULL || existing_pathname[0] == '\0')
&& (existing_wcs_pathname == NULL || existing_wcs_pathname[0] == L'\0')) {
if (archive_entry_copy_pathname_l(entry,
header->name, sizeof(header->name), tar->sconv) != 0) {
err = set_conversion_failed_error(a, tar->sconv, "Pathname");