[SCM] The rsync repository. - branch master updated

Rsync CVS commit messages rsync-cvs at lists.samba.org
Tue Sep 20 14:04:17 MDT 2011


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 <wayned at 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.


More information about the rsync-cvs mailing list