Commit de219101 authored by Wayne Davison's avatar Wayne Davison

Change stat order for better ELOOP determination.

parent 79853c30
......@@ -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;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment