File 0794-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
@@ -4846,6 +4846,13 @@ 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);
             }
 	    break;
-- 
2.31.1

openSUSE Build Service is sponsored by