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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <map> | 9 #include <map> |
10 #include <memory> | 10 #include <memory> |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 return true; | 85 return true; |
86 } | 86 } |
87 | 87 |
88 bool StartsWithDriveLetter(const base::string16& path) { | 88 bool StartsWithDriveLetter(const base::string16& path) { |
89 if (path.size() < 3) | 89 if (path.size() < 3) |
90 return false; | 90 return false; |
91 | 91 |
92 if (path[1] != L':' || path[2] != L'\\') | 92 if (path[1] != L':' || path[2] != L'\\') |
93 return false; | 93 return false; |
94 | 94 |
95 return (path[0] >= 'a' && path[0] <= 'z') || | 95 return base::IsAsciiAlpha(path[0]); |
96 (path[0] >= 'A' && path[0] <= 'Z'); | |
97 } | 96 } |
98 | 97 |
99 const wchar_t kNTDotPrefix[] = L"\\\\.\\"; | 98 const wchar_t kNTDotPrefix[] = L"\\\\.\\"; |
100 const size_t kNTDotPrefixLen = arraysize(kNTDotPrefix) - 1; | 99 const size_t kNTDotPrefixLen = arraysize(kNTDotPrefix) - 1; |
101 | 100 |
102 // Removes "\\\\.\\" from the path. | 101 // Removes "\\\\.\\" from the path. |
103 void RemoveImpliedDevice(base::string16* path) { | 102 void RemoveImpliedDevice(base::string16* path) { |
104 if (0 == path->compare(0, kNTDotPrefixLen, kNTDotPrefix)) | 103 if (0 == path->compare(0, kNTDotPrefixLen, kNTDotPrefix)) |
105 *path = path->substr(kNTDotPrefixLen); | 104 *path = path->substr(kNTDotPrefixLen); |
106 } | 105 } |
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 ::InterlockedCompareExchangePointer( | 418 ::InterlockedCompareExchangePointer( |
420 reinterpret_cast<PVOID volatile*>(&ntdll), ntdll_local, NULL); | 419 reinterpret_cast<PVOID volatile*>(&ntdll), ntdll_local, NULL); |
421 | 420 |
422 } | 421 } |
423 | 422 |
424 CHECK_NT(ntdll); | 423 CHECK_NT(ntdll); |
425 FARPROC* function_ptr = reinterpret_cast<FARPROC*>(ptr); | 424 FARPROC* function_ptr = reinterpret_cast<FARPROC*>(ptr); |
426 *function_ptr = ::GetProcAddress(ntdll, name); | 425 *function_ptr = ::GetProcAddress(ntdll, name); |
427 CHECK_NT(*function_ptr); | 426 CHECK_NT(*function_ptr); |
428 } | 427 } |
OLD | NEW |