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 |