Windows: always set reparse point attrib for symlink
authorJeffrey Altman <jaltman@your-file-system.com>
Wed, 2 Nov 2011 23:27:42 +0000 (19:27 -0400)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Thu, 3 Nov 2011 04:21:46 +0000 (21:21 -0700)
Make sure that we always set the reparse point attribute
for symlinks in directory enumerations and attribute queries.

Change-Id: Ie7520cef64793e3385f229934189fc56a3edb584
Reviewed-on: http://gerrit.openafs.org/5793
Tested-by: Jeffrey Altman <jaltman@secure-endpoints.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>

src/WINNT/afsrdr/kernel/lib/AFSDirControl.cpp
src/WINNT/afsrdr/kernel/lib/AFSFileInfo.cpp

index 1c5a8cc..cf7ec7b 100644 (file)
@@ -766,6 +766,8 @@ AFSQueryDirectory( IN PIRP Irp)
                                                            &stFileInfo)))
                 {
 
+                    ulAdditionalAttributes = FILE_ATTRIBUTE_REPARSE_POINT;
+
                     bUseFileInfo = TRUE;
                 }
             }
@@ -851,7 +853,7 @@ AFSQueryDirectory( IN PIRP Irp)
                         pDirInfo->EndOfFile = stFileInfo.EndOfFile;
                         pDirInfo->AllocationSize = stFileInfo.AllocationSize;
 
-                        pDirInfo->FileAttributes = stFileInfo.FileAttributes;
+                        pDirInfo->FileAttributes = stFileInfo.FileAttributes | ulAdditionalAttributes;
                     }
                     else if( BooleanFlagOn( pDirEntry->Flags, AFS_DIR_ENTRY_FAKE))
                     {
index bd98b3e..9659505 100644 (file)
@@ -780,6 +780,8 @@ AFSQueryBasicInfo( IN PIRP Irp,
                                                        &stFileInfo)))
             {
                 ulFileAttribs = stFileInfo.FileAttributes;
+
+                ulFileAttribs |= FILE_ATTRIBUTE_REPARSE_POINT;
             }
         }
 
@@ -1329,6 +1331,8 @@ AFSQueryNetworkInfo( IN PIRP Irp,
                                                        &stFileInfo)))
             {
                 ulFileAttribs = stFileInfo.FileAttributes;
+
+                ulFileAttribs |= FILE_ATTRIBUTE_REPARSE_POINT;
             }
         }
 
@@ -1484,6 +1488,8 @@ AFSQueryAttribTagInfo( IN PIRP Irp,
                                                        &stFileInfo)))
             {
                 ulFileAttribs = stFileInfo.FileAttributes;
+
+                ulFileAttribs |= FILE_ATTRIBUTE_REPARSE_POINT;
             }
         }