The branch, master has been updated
       via  de21910 Change stat order for better ELOOP determination.
      from  79853c3 Be sure to use STRUCT_STAT.

;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit de219101ed2d1eca188c37f9a06b9764c4ca528e
Author: Wayne Davison <way...@samba.org>
Date:   Tue Sep 20 13:02:12 2011 -0700

    Change stat order for better ELOOP determination.

-----------------------------------------------------------------------

Summary of changes:
 syscall.c |   13 ++++++-------
 1 files changed, 6 insertions(+), 7 deletions(-)


Changeset truncated at 500 lines:

diff --git a/syscall.c b/syscall.c
index e2b1394..5a7c8e8 100644
--- a/syscall.c
+++ b/syscall.c
@@ -464,9 +464,14 @@ int do_open_nofollow(const char *pathname, int flags)
 #ifdef O_NOFOLLOW
        fd = open(pathname, flags|O_NOFOLLOW);
 #else
+       if (do_lstat(pathname, &l_st) < 0)
+               return -1;
+       if (S_ISLNK(l_st.st_mode)) {
+               errno = ELOOP;
+               return -1;
+       }
        if ((fd = open(pathname, flags)) < 0)
                return fd;
-
        if (do_fstat(fd, &f_st) < 0) {
          close_and_return_error:
                {
@@ -476,12 +481,6 @@ int do_open_nofollow(const char *pathname, int flags)
                }
                return -1;
        }
-       if (do_lstat(pathname, &l_st) < 0)
-               goto close_and_return_error;
-       if (S_ISLNK(l_st.st_mode)) {
-               errno = ELOOP;
-               goto close_and_return_error;
-       }
        if (l_st.st_dev != f_st.st_dev || l_st.st_ino != f_st.st_ino) {
                errno = EINVAL;
                goto close_and_return_error;


-- 
The rsync repository.
_______________________________________________
rsync-cvs mailing list
rsync-cvs@lists.samba.org
https://lists.samba.org/mailman/listinfo/rsync-cvs

Reply via email to