diff --git a/NEWS b/NEWS index 4a216758..866edcee 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -GNU tar NEWS - User visible changes. 2025-10-19 +GNU tar NEWS - User visible changes. 2025-11-09 Please send GNU tar bug reports to version 1.35.90 (git) @@ -49,6 +49,9 @@ option. not even temporarily. This matches the documentation better and avoids some permissions glitches. +** tar no longer fails merely if an extraction directory is unreadable + on Linux kernels. + ** tar now works better in strict debugging environments that do not allow pointer arithmetic to escape from a sub-element of an array. diff --git a/src/tar.c b/src/tar.c index 9be0d7f0..0911a9e1 100644 --- a/src/tar.c +++ b/src/tar.c @@ -2701,7 +2701,12 @@ decode_options (int argc, char **argv) | (dereference_option ? 0 : O_NOFOLLOW) | (atime_preserve_option == system_atime_preserve ? O_NOATIME : 0)); open_read_flags = O_RDONLY | base_open_flags; - open_searchdir_flags = O_SEARCH | O_DIRECTORY | base_open_flags; +#if defined O_PATH && O_SEARCH == O_RDONLY + int open_search_flag = O_PATH; +#else + int open_search_flag = O_SEARCH; +#endif + open_searchdir_flags = open_search_flag | O_DIRECTORY | base_open_flags; } fstatat_flags = dereference_option ? 0 : AT_SYMLINK_NOFOLLOW;