summaryrefslogtreecommitdiff
path: root/memory
diff options
context:
space:
mode:
authorMoonchild <moonchild@palemoon.org>2023-09-26 21:07:29 +0200
committerMoonchild <moonchild@palemoon.org>2023-09-26 21:07:29 +0200
commit7a48dfc06654403e929863473ff3e32928eeeb0d (patch)
tree8790c68dcaca8862b6fd14059bc5b885cd0e4b62 /memory
parent4769b2a9fa43f493161cf00a4ed4df9ffae4b9c1 (diff)
downloaduxp-7a48dfc06654403e929863473ff3e32928eeeb0d.tar.gz
[memory] Guard OOM reporter from incorrectly reported (too small) size.
Diffstat (limited to 'memory')
-rw-r--r--memory/mozalloc/mozalloc.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/memory/mozalloc/mozalloc.cpp b/memory/mozalloc/mozalloc.cpp
index c8e37934f8..21d8e8666e 100644
--- a/memory/mozalloc/mozalloc.cpp
+++ b/memory/mozalloc/mozalloc.cpp
@@ -64,6 +64,7 @@ extern "C" MOZ_MEMORY_API char *strndup_impl(const char *, size_t);
#include <sys/types.h>
+#include "mozilla/CheckedInt.h"
#include "mozilla/Likely.h"
#include "mozilla/mozalloc.h"
#include "mozilla/mozalloc_oom.h" // for mozalloc_handle_oom
@@ -84,7 +85,8 @@ moz_xcalloc(size_t nmemb, size_t size)
{
void* ptr = calloc_impl(nmemb, size);
if (MOZ_UNLIKELY(!ptr && nmemb && size)) {
- mozalloc_handle_oom(size);
+ mozilla::CheckedInt<size_t> totalSize = mozilla::CheckedInt<size_t>(nmemb) * size;
+ mozalloc_handle_oom(totalSize.isValid() ? totalSize.value() : SIZE_MAX);
return moz_xcalloc(nmemb, size);
}
return ptr;