// Copyright (c) 2011 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. #include "chrome/common/external_ipc_fuzzer.h" #if defined(OS_LINUX) #include #endif typedef IPC::ChannelProxy::OutgoingMessageFilter *(*GetFuzzerFunction)(); const char kFuzzLibraryName[] = "libipcfuzz.so"; const char kFuzzEntryName[] = "GetFilter"; IPC::ChannelProxy::OutgoingMessageFilter* LoadExternalIPCFuzzer() { IPC::ChannelProxy::OutgoingMessageFilter* result = NULL; #if defined(OS_LINUX) // Fuzz is currently linux-only feature void *fuzz_library = dlopen(kFuzzLibraryName, RTLD_NOW); if (fuzz_library) { GetFuzzerFunction fuzz_entry_point = reinterpret_cast( dlsym(fuzz_library, kFuzzEntryName)); if (fuzz_entry_point) result = fuzz_entry_point(); } if (!result) LOG(WARNING) << dlerror() << "\n"; #endif // OS_LINUX return result; }