diff options
author | icoolidge <icoolidge@chromium.org> | 2015-04-01 00:03:22 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-01 07:04:08 +0000 |
commit | 82cb6b003c8e20e4a8386bf8698980bb4981d434 (patch) | |
tree | 3e67ec25415c3713b07e1d6154d340ac5f1764f9 /base/test | |
parent | 6119a59cd027dc95156d29c3d922d673e55ad1f5 (diff) | |
download | chromium_src-82cb6b003c8e20e4a8386bf8698980bb4981d434.zip chromium_src-82cb6b003c8e20e4a8386bf8698980bb4981d434.tar.gz chromium_src-82cb6b003c8e20e4a8386bf8698980bb4981d434.tar.bz2 |
Fix OutOfMemoryDeathTest.ViaSharedLibraries.
This test was invalid on modern glibc:
asprintf errors EOVERFLOW without attempting an allocation
when the size is at least INT_MAX - 32. INT_MAX - 33 is the
largest size that can attempt to trigger allocation failure,
and will not necessarily accomplish that on some systems.
Create a library that is specified to wrap malloc trivially,
to accomplish the goal of the test without external dependencies
or inconsistently implemented behavior.
BUG=428211
Review URL: https://codereview.chromium.org/878473002
Cr-Commit-Position: refs/heads/master@{#323197}
Diffstat (limited to 'base/test')
-rw-r--r-- | base/test/BUILD.gn | 10 | ||||
-rw-r--r-- | base/test/malloc_wrapper.cc | 11 | ||||
-rw-r--r-- | base/test/malloc_wrapper.h | 21 |
3 files changed, 42 insertions, 0 deletions
diff --git a/base/test/BUILD.gn b/base/test/BUILD.gn index c4356cb..b94a4c7 100644 --- a/base/test/BUILD.gn +++ b/base/test/BUILD.gn @@ -183,6 +183,16 @@ source_set("run_all_unittests") { ] } +shared_library("malloc_wrapper") { + testonly = true + sources = [ + "malloc_wrapper.cc", + ] + deps = [ + "//base", + ] +} + if (is_android) { generate_jni("base_unittests_jni_headers") { sources = [ diff --git a/base/test/malloc_wrapper.cc b/base/test/malloc_wrapper.cc new file mode 100644 index 0000000..eb280a3 --- /dev/null +++ b/base/test/malloc_wrapper.cc @@ -0,0 +1,11 @@ +// Copyright 2015 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 "malloc_wrapper.h" + +#include <stdlib.h> + +void* MallocWrapper(size_t size) { + return malloc(size); +} diff --git a/base/test/malloc_wrapper.h b/base/test/malloc_wrapper.h new file mode 100644 index 0000000..0fa7dbb --- /dev/null +++ b/base/test/malloc_wrapper.h @@ -0,0 +1,21 @@ +// Copyright 2015 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 BASE_TEST_MALLOC_WRAPPER_H_ +#define BASE_TEST_MALLOC_WRAPPER_H_ + +#include "base/basictypes.h" + +// BASE_EXPORT depends on COMPONENT_BUILD. +// This will always be a separate shared library, so don't use BASE_EXPORT here. +#if defined(WIN32) +#define MALLOC_WRAPPER_EXPORT __declspec(dllexport) +#else +#define MALLOC_WRAPPER_EXPORT __attribute__((visibility("default"))) +#endif // defined(WIN32) + +// Calls malloc directly. +MALLOC_WRAPPER_EXPORT void* MallocWrapper(size_t size); + +#endif // BASE_TEST_MALLOC_WRAPPER_H_ |