| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "sandbox/win/src/win_utils.h" | 5 #include "sandbox/win/src/win_utils.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 | 8 |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "sandbox/win/src/internal_types.h" | 10 #include "sandbox/win/src/internal_types.h" |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 107 NOTREACHED_NT(); | 107 NOTREACHED_NT(); |
| 108 return error; | 108 return error; |
| 109 } | 109 } |
| 110 } else if (FILE_ATTRIBUTE_REPARSE_POINT & attributes) { | 110 } else if (FILE_ATTRIBUTE_REPARSE_POINT & attributes) { |
| 111 // This is a reparse point. | 111 // This is a reparse point. |
| 112 *result = true; | 112 *result = true; |
| 113 return ERROR_SUCCESS; | 113 return ERROR_SUCCESS; |
| 114 } | 114 } |
| 115 | 115 |
| 116 last_pos = path.rfind(L'\\'); | 116 last_pos = path.rfind(L'\\'); |
| 117 } while (last_pos != base::string16::npos); | 117 } while (last_pos > 2); // Skip root dir. |
| 118 | 118 |
| 119 *result = false; | 119 *result = false; |
| 120 return ERROR_SUCCESS; | 120 return ERROR_SUCCESS; |
| 121 } | 121 } |
| 122 | 122 |
| 123 // We get a |full_path| of the form \??\c:\some\foo\bar, and the name that | 123 // We get a |full_path| of the form \??\c:\some\foo\bar, and the name that |
| 124 // we'll get from |handle| will be \device\harddiskvolume1\some\foo\bar. | 124 // we'll get from |handle| will be \device\harddiskvolume1\some\foo\bar. |
| 125 bool SameObject(HANDLE handle, const wchar_t* full_path) { | 125 bool SameObject(HANDLE handle, const wchar_t* full_path) { |
| 126 base::string16 path(full_path); | 126 base::string16 path(full_path); |
| 127 DCHECK_NT(!path.empty()); | 127 DCHECK_NT(!path.empty()); |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 315 | 315 |
| 316 for (int tries = 1; !(*function_ptr) && tries < max_tries; ++tries) { | 316 for (int tries = 1; !(*function_ptr) && tries < max_tries; ++tries) { |
| 317 if (tries >= sleep_threshold) | 317 if (tries >= sleep_threshold) |
| 318 ::Sleep(1); | 318 ::Sleep(1); |
| 319 ntdll = ::GetModuleHandle(sandbox::kNtdllName); | 319 ntdll = ::GetModuleHandle(sandbox::kNtdllName); |
| 320 *function_ptr = ::GetProcAddress(ntdll, name); | 320 *function_ptr = ::GetProcAddress(ntdll, name); |
| 321 } | 321 } |
| 322 | 322 |
| 323 CHECK_NT(*function_ptr); | 323 CHECK_NT(*function_ptr); |
| 324 } | 324 } |
| OLD | NEW |