File 1273-Protect-binary_to_term-1-against-bad-binaries-on-32-.patch of Package erlang

From 2859601cca7a9c1c156e64b8e538849e22c38125 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= <bjorn@erlang.org>
Date: Fri, 3 Sep 2021 10:38:39 +0200
Subject: [PATCH] Protect binary_to_term/1 against bad binaries on 32-bit
 systems

---
 erts/emulator/beam/external.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/erts/emulator/beam/external.c b/erts/emulator/beam/external.c
index c8d0bf7f40..776d42d6d2 100644
--- a/erts/emulator/beam/external.c
+++ b/erts/emulator/beam/external.c
@@ -5783,6 +5783,12 @@ init_done:
             if (n <= MAP_SMALL_MAP_LIMIT) {
                 heap_size += 3 + n + 1 + n;
             } else {
+#if !defined(ARCH_64)
+                if ((n >> 30) != 0) {
+                    /* Can't possibly fit in memory. */
+                    goto error;
+                }
+#endif
                 CHKSIZE(2*n);   /* Conservative size check */
                 heap_size += HASHMAP_ESTIMATED_HEAP_SIZE(n);
             }
-- 
2.31.1

openSUSE Build Service is sponsored by