diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 80a705521..01ffad067 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2010-09-14 Corinna Vinschen + + * path.cc (symlink_info::check): Make sure AllocationSize and EndOfFile + are stored in the right order when fetching the info from the + NtQueryDirectoryFile result. + 2010-09-13 Corinna Vinschen * fhandler_process.cc (get_mem_values): Simplify code. Fix diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 470546586..d29aff028 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -2525,6 +2525,14 @@ restart: { fileattr = fdi_buf.fdi.FileAttributes; memcpy (pfnoi, &fdi_buf.fdi.CreationTime, sizeof *pfnoi); + /* Amazing, but true: The FILE_NETWORK_OPEN_INFORMATION + structure has the AllocationSize and EndOfFile members + interchanged relative to the directory information + classes. */ + pfnoi->AllocationSize.QuadPart + = fdi_buf.fdi.AllocationSize.QuadPart; + pfnoi->EndOfFile.QuadPart + = fdi_buf.fdi.EndOfFile.QuadPart; } } ext_tacked_on = !!*ext_here;