summaryrefslogtreecommitdiffstats
path: root/base/test
diff options
context:
space:
mode:
authoricoolidge <icoolidge@chromium.org>2015-04-01 00:03:22 -0700
committerCommit bot <commit-bot@chromium.org>2015-04-01 07:04:08 +0000
commit82cb6b003c8e20e4a8386bf8698980bb4981d434 (patch)
tree3e67ec25415c3713b07e1d6154d340ac5f1764f9 /base/test
parent6119a59cd027dc95156d29c3d922d673e55ad1f5 (diff)
downloadchromium_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.gn10
-rw-r--r--base/test/malloc_wrapper.cc11
-rw-r--r--base/test/malloc_wrapper.h21
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_