// 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 <dlfcn.h>

typedef IPC::ChannelProxy::OutgoingMessageFilter *(*GetFuzzerFunction)();
const char kFuzzLibraryName[] = "libipcfuzz.so";
const char kFuzzEntryName[] = "GetFilter";
#endif

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<GetFuzzerFunction>(
            dlsym(fuzz_library, kFuzzEntryName));

    if (fuzz_entry_point)
      result = fuzz_entry_point();
  }

  if (!result)
    LOG(WARNING) << dlerror() << "\n";

#endif // OS_LINUX

  return result;
}



