bug-tar
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-tar] [PATCH] fix extrac13.at with a non-working O_NOFOLLOW


From: Paul Eggert
Subject: Re: [Bug-tar] [PATCH] fix extrac13.at with a non-working O_NOFOLLOW
Date: Tue, 17 Jan 2012 22:25:41 -0800
User-agent: Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20111124 Thunderbird/8.0

Thanks, that's too bad about GNU/Hurd not supporting O_NOFOLLOW.
I installed the following slightly-different patch:

tar: port --overwrite symlink test to GNU/Hurd
Problem reported by Pino Toscano in
<http://lists.gnu.org/archive/html/bug-tar/2012-01/msg00040.html>.
* gnulib.modules: Add fcntl-h, which defines
HAVE_WORKING_O_NOFOLLOW.
* src/extract.c (open_output_file): Use HAVE_WORKING_O_NOFOLLOW,
not O_NOFOLLOW, when testing whther O_NOFOLLOW works.
diff --git a/gnulib.modules b/gnulib.modules
index 49eab65..43c9de1 100644
--- a/gnulib.modules
+++ b/gnulib.modules
@@ -12,6 +12,7 @@ dirname
 error
 exclude
 exitfail
+fcntl-h
 fdopendir
 fdutimensat
 fileblocks
diff --git a/src/extract.c b/src/extract.c
index 55f3eb8..bd5e7bf 100644
--- a/src/extract.c
+++ b/src/extract.c
@@ -887,7 +887,8 @@ open_output_file (char const *file_name, int typeflag, 
mode_t mode,
   /* If O_NOFOLLOW is needed but does not work, check for a symlink
      separately.  There's a race condition, but that cannot be avoided
      on hosts lacking O_NOFOLLOW.  */
-  if (! O_NOFOLLOW && overwriting_old_files && ! dereference_option)
+  if (! HAVE_WORKING_O_NOFOLLOW
+      && overwriting_old_files && ! dereference_option)
     {
       struct stat st;
       if (fstatat (chdir_fd, file_name, &st, AT_SYMLINK_NOFOLLOW) == 0



reply via email to

[Prev in Thread] Current Thread [Next in Thread]