summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h
diff options
context:
space:
mode:
Diffstat (limited to 'compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h')
-rw-r--r--compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h15
1 files changed, 9 insertions, 6 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h b/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h
index 2c8e2a2bbd3..029d551e909 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_allocator_combined.h
@@ -46,10 +46,8 @@ class CombinedAllocator {
// Returning 0 on malloc(0) may break a lot of code.
if (size == 0)
size = 1;
- if (size + alignment < size)
- return ReturnNullOrDie();
- if (check_rss_limit && RssLimitIsExceeded())
- return ReturnNullOrDie();
+ if (size + alignment < size) return ReturnNullOrDieOnBadRequest();
+ if (check_rss_limit && RssLimitIsExceeded()) return ReturnNullOrDieOnOOM();
if (alignment > 8)
size = RoundUpTo(size, alignment);
void *res;
@@ -69,10 +67,15 @@ class CombinedAllocator {
return atomic_load(&may_return_null_, memory_order_acquire);
}
- void *ReturnNullOrDie() {
+ void *ReturnNullOrDieOnBadRequest() {
if (MayReturnNull())
return nullptr;
- ReportAllocatorCannotReturnNull();
+ ReportAllocatorCannotReturnNull(false);
+ }
+
+ void *ReturnNullOrDieOnOOM() {
+ if (MayReturnNull()) return nullptr;
+ ReportAllocatorCannotReturnNull(true);
}
void SetMayReturnNull(bool may_return_null) {
OpenPOWER on IntegriCloud