[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