| Index: base/platform_file_win.cc
|
| ===================================================================
|
| --- base/platform_file_win.cc (revision 256979)
|
| +++ base/platform_file_win.cc (working copy)
|
| @@ -86,6 +86,20 @@
|
| HANDLE file = CreateFile(name.value().c_str(), access, sharing, NULL,
|
| disposition, create_flags, NULL);
|
|
|
| + if (INVALID_HANDLE_VALUE != file){
|
| + // Don't allow directories to be opened without the proper flag (block ADS).
|
| + if (!(flags & PLATFORM_FILE_BACKUP_SEMANTICS)) {
|
| + BY_HANDLE_FILE_INFORMATION info = { 0 };
|
| + BOOL result = GetFileInformationByHandle(file, &info);
|
| + DCHECK(result);
|
| + if (info.dwFileAttributes & (FILE_ATTRIBUTE_DIRECTORY |
|
| + FILE_ATTRIBUTE_REPARSE_POINT)) {
|
| + CloseHandle(file);
|
| + file = INVALID_HANDLE_VALUE;
|
| + }
|
| + }
|
| + }
|
| +
|
| if (created && (INVALID_HANDLE_VALUE != file)) {
|
| if (flags & (PLATFORM_FILE_OPEN_ALWAYS))
|
| *created = (ERROR_ALREADY_EXISTS != GetLastError());
|
|
|