Chromium Code Reviews| Index: chrome_elf/blacklist/blacklist.h |
| diff --git a/chrome_elf/blacklist/blacklist.h b/chrome_elf/blacklist/blacklist.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..09dd48684b70c2535843de06ca4ad9793c92a37e |
| --- /dev/null |
| +++ b/chrome_elf/blacklist/blacklist.h |
| @@ -0,0 +1,52 @@ |
| +// Copyright 2013 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CHROME_ELF_BLACKLIST_BLACKLIST_H_ |
| +#define CHROME_ELF_BLACKLIST_BLACKLIST_H_ |
| + |
| +namespace blacklist { |
| + |
| +// Max size of the DLL blacklist. |
| +const int kTroublesomeDllsMaxCount = 64; |
| + |
| +// The DLL blacklist. |
| +extern const wchar_t* g_troublesome_dlls[kTroublesomeDllsMaxCount]; |
| + |
| +// Cursor to the current last element in the blacklist. |
| +extern int g_troublesome_dlls_cur_index; |
| + |
| +// The registry path of the blacklist beacon. Exposed here for testing. |
| +extern const wchar_t kRegistryBeaconPath[]; |
| + |
| +// Attempt to create a beacon in the current user's registry hive. |
|
rvargas (doing something else)
2013/12/17 22:09:27
nit: Attempts
robertshield
2013/12/18 02:34:43
Done.
|
| +// If the beacon already exists or any other error occurs when creating the |
| +// beacon, return false. Otherwise return true. |
|
rvargas (doing something else)
2013/12/17 22:09:27
nit: returns
robertshield
2013/12/18 02:34:43
Done.
|
| +// The intent of the beacon is to act as an extra failure mode protection |
| +// whereby if Chrome for some reason fails to start during blacklist setup, |
| +// it will skip blacklisting on the subsequent run. |
| +bool CreateBeacon(); |
| + |
| +// Looks for the beacon that CreateBeacon() creates and attempts to delete it. |
| +// Returns true if the beacon was found and deleted. |
| +bool ClearBeacon(); |
| + |
| +// Adds the given dll name to the blacklist. Returns true if the dll name is in |
| +// the blacklist when this returns, false on error. Note that this will copy |
| +// |dll_name| and will leak it on exit if the string is not subsequently removed |
| +// using RemoveDllFromBlacklist. |
| +extern "C" bool AddDllToBlacklist(const wchar_t* dll_name); |
| + |
| +// Removes the given dll name from the blacklist. Returns true if it was |
| +// removed, false on error. |
| +extern "C" bool RemoveDllFromBlacklist(const wchar_t* dll_name); |
| + |
| +// Initialize the DLL blacklist in the current process. This should be called |
|
rvargas (doing something else)
2013/12/17 22:09:27
nit: initializes
robertshield
2013/12/18 02:34:43
Done.
|
| +// before any undesirable DLLs might be loaded. If |force| is set to true, then |
| +// initialization will take place even if a beacon is present. This is useful |
| +// for tests. |
| +bool Initialize(bool force); |
| + |
| +} // namespace blacklist |
| + |
| +#endif // CHROME_ELF_BLACKLIST_BLACKLIST_H_ |