Chromium Code Reviews| Index: chrome_elf/blacklist/blacklist.cc |
| diff --git a/chrome_elf/blacklist/blacklist.cc b/chrome_elf/blacklist/blacklist.cc |
| index eda611db41eba3a80f35c9f15964aaaa1c6bf47e..6a4e942cf431f73836b85c83171f119bf2af367f 100644 |
| --- a/chrome_elf/blacklist/blacklist.cc |
| +++ b/chrome_elf/blacklist/blacklist.cc |
| @@ -19,8 +19,11 @@ extern "C" IMAGE_DOS_HEADER __ImageBase; |
| namespace blacklist{ |
| -const wchar_t* g_troublesome_dlls[kTroublesomeDllsMaxCount] = {}; |
| -int g_troublesome_dlls_cur_index = 0; |
| +const wchar_t* g_troublesome_dlls[kTroublesomeDllsMaxCount] = { |
| + L"libsvn_tsvn32.dll", |
| + // Keep this null pointer here to mark the end of the list. |
| + NULL, |
| +}; |
| const wchar_t kRegistryBeaconPath[] = L"SOFTWARE\\Google\\Chrome\\BLBeacon"; |
| const wchar_t kBeaconVersion[] = L"version"; |
| @@ -233,11 +236,22 @@ bool ResetBeacon() { |
| return (result == ERROR_SUCCESS); |
| } |
| +int BlacklistSize() { |
| + int size = 0; |
| + while(blacklist::g_troublesome_dlls[size] != NULL) { |
| + ++size; |
| + } |
|
robertshield
2014/01/24 01:50:24
nit: no brackets needed for one line body. also sp
csharp
2014/01/24 16:22:59
Removed unneeded brackets.
The function needs to
|
| + |
| + return size; |
| +} |
| + |
| bool AddDllToBlacklist(const wchar_t* dll_name) { |
| - if (g_troublesome_dlls_cur_index >= kTroublesomeDllsMaxCount) |
| + int blacklist_size = BlacklistSize(); |
| + // We need to leave one space at the end for the null pointer. |
| + if (blacklist_size + 1 >= kTroublesomeDllsMaxCount) |
| return false; |
| - for (int i = 0; i < g_troublesome_dlls_cur_index; ++i) { |
| - if (!wcscmp(g_troublesome_dlls[i], dll_name)) |
| + for (int i=0; i < blacklist_size; ++i) { |
| + if (!_wcsicmp(g_troublesome_dlls[i], dll_name)) |
| return true; |
| } |
| @@ -245,20 +259,19 @@ bool AddDllToBlacklist(const wchar_t* dll_name) { |
| wchar_t* str_buffer = new wchar_t[wcslen(dll_name) + 1]; |
| wcscpy(str_buffer, dll_name); |
| - g_troublesome_dlls[g_troublesome_dlls_cur_index] = str_buffer; |
| - g_troublesome_dlls_cur_index++; |
| + g_troublesome_dlls[blacklist_size] = str_buffer; |
| return true; |
| } |
| bool RemoveDllFromBlacklist(const wchar_t* dll_name) { |
| - for (int i = 0; i < g_troublesome_dlls_cur_index; ++i) { |
| - if (!wcscmp(g_troublesome_dlls[i], dll_name)) { |
| + int blacklist_size = BlacklistSize(); |
| + for (int i = 0; i < blacklist_size; ++i) { |
| + if (!_wcsicmp(g_troublesome_dlls[i], dll_name)) { |
| // Found the thing to remove. Delete it then replace it with the last |
| // element. |
| - g_troublesome_dlls_cur_index--; |
| delete[] g_troublesome_dlls[i]; |
| - g_troublesome_dlls[i] = g_troublesome_dlls[g_troublesome_dlls_cur_index]; |
| - g_troublesome_dlls[g_troublesome_dlls_cur_index] = NULL; |
| + g_troublesome_dlls[i] = g_troublesome_dlls[blacklist_size - 1]; |
| + g_troublesome_dlls[blacklist_size - 1] = NULL; |
| return true; |
| } |
| } |