You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by "Spinka, Kristofer" <ks...@style.net> on 2003/03/28 13:32:47 UTC

[PATCH]: srclib/apr/file_io/win32/filestat.c (Bug #8014: Apache cannot handle NTFS Junctions (Symlinks))

  I'm not 100% this fixes the issue mentioned at
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8014 though I tried to
reproduce the issue as I understood it.  If one of the bug submitters
could test it that would be great.  Bill, if you could verify that this
change is reasonable I would appreciate it, the 'wanted' thing is a
little vague to me.

--- filestat.c.orig     Fri Mar  7 14:21:29 2003
+++ filestat.c  Fri Mar 28 07:16:02 2003
@@ -363,7 +363,8 @@
         finfo->size = 0x7fffffff;
 #endif
 
-    if (wininfo->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
+    if (wanted & APR_FINFO_LINK &&
+        wininfo->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
         finfo->filetype = APR_LNK;
     }
     else if (wininfo->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {


   /kristofer


Re: [PATCH]: srclib/apr/file_io/win32/filestat.c (Bug #8014: Apache cannot handle NTFS Junctions (Symlinks))

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
At 06:32 AM 3/28/2003, Spinka, Kristofer wrote:
>  I'm not 100% this fixes the issue mentioned at
>http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8014 though I tried to
>reproduce the issue as I understood it.  If one of the bug submitters
>could test it that would be great.  Bill, if you could verify that this
>change is reasonable I would appreciate it, the 'wanted' thing is a
>little vague to me.
>
>--- filestat.c.orig     Fri Mar  7 14:21:29 2003
>+++ filestat.c  Fri Mar 28 07:16:02 2003
>@@ -363,7 +363,8 @@
>         finfo->size = 0x7fffffff;
> #endif
> 
>-    if (wininfo->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
>+    if (wanted & APR_FINFO_LINK &&
>+        wininfo->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
>         finfo->filetype = APR_LNK;
>     }
>     else if (wininfo->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {


Ok, a reparse point (Junction) is a symlink of sorts pointing at another
Directory.  The wanted bit APR_FINFO_LINK tells Apache we want the
actual details about the LINK itself, we don't want the info about the
link target directory.

If we omit APR_FINFO_LINK and the junction is valid, we should return
the stats of the target directory.  So your patch looks essentially correct.

Bill 


Re: [PATCH]: srclib/apr/file_io/win32/filestat.c (Bug #8014: Apache cannot handle NTFS Junctions (Symlinks))

Posted by "William A. Rowe, Jr." <wr...@rowe-clan.net>.
At 06:32 AM 3/28/2003, Spinka, Kristofer wrote:
>  I'm not 100% this fixes the issue mentioned at
>http://nagoya.apache.org/bugzilla/show_bug.cgi?id=8014 though I tried to
>reproduce the issue as I understood it.  If one of the bug submitters
>could test it that would be great.  Bill, if you could verify that this
>change is reasonable I would appreciate it, the 'wanted' thing is a
>little vague to me.
>
>--- filestat.c.orig     Fri Mar  7 14:21:29 2003
>+++ filestat.c  Fri Mar 28 07:16:02 2003
>@@ -363,7 +363,8 @@
>         finfo->size = 0x7fffffff;
> #endif
> 
>-    if (wininfo->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
>+    if (wanted & APR_FINFO_LINK &&
>+        wininfo->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) {
>         finfo->filetype = APR_LNK;
>     }
>     else if (wininfo->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {


Ok, a reparse point (Junction) is a symlink of sorts pointing at another
Directory.  The wanted bit APR_FINFO_LINK tells Apache we want the
actual details about the LINK itself, we don't want the info about the
link target directory.

If we omit APR_FINFO_LINK and the junction is valid, we should return
the stats of the target directory.  So your patch looks essentially correct.

Bill