Index: base/platform_file_win.cc |
diff --git a/base/platform_file_win.cc b/base/platform_file_win.cc |
index 07b5c48c22bf1add6aaf77e93cb63a0ee36d6da7..b5e07d7665ffe6a9afa9fa184c39fafa4a3fafe9 100644 |
--- a/base/platform_file_win.cc |
+++ b/base/platform_file_win.cc |
@@ -86,6 +86,20 @@ PlatformFile CreatePlatformFileUnsafe(const FilePath& name, |
HANDLE file = CreateFile(name.value().c_str(), access, sharing, NULL, |
disposition, create_flags, NULL); |
+ if (INVALID_HANDLE_VALUE != file){ |
Peter Kasting
2014/03/14 02:58:20
You didn't correct this style guide violation :(
|
+ // 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()); |