[前][次][番号順一覧][スレッド一覧]

ruby-changes:63263

From: Nobuyoshi <ko1@a...>
Date: Sat, 3 Oct 2020 10:48:03 +0900 (JST)
Subject: [ruby-changes:63263] 5a665f6ce7 (master): Check builtin inline function index overflow

https://git.ruby-lang.org/ruby.git/commit/?id=5a665f6ce7

From 5a665f6ce796730b9b81a27e418fdba49b5f83b7 Mon Sep 17 00:00:00 2001
From: Nobuyoshi Nakada <nobu@r...>
Date: Sat, 3 Oct 2020 00:11:03 +0900
Subject: Check builtin inline function index overflow


diff --git a/compile.c b/compile.c
index 7053837..c378c17 100644
--- a/compile.c
+++ b/compile.c
@@ -7294,7 +7294,7 @@ compile_call(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, co https://github.com/ruby/ruby/blob/trunk/compile.c#L7294
             return COMPILE_NG;
         }
         else {
-            char inline_func[0x20];
+            char inline_func[DECIMAL_SIZE_OF_BITS(sizeof(int) * CHAR_BIT) + 1];
             bool cconst = false;
           retry:;
             const struct rb_builtin_function *bf = iseq_builtin_function_lookup(iseq, builtin_func);
@@ -7325,8 +7325,11 @@ compile_call(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *const node, co https://github.com/ruby/ruby/blob/trunk/compile.c#L7325
                     return COMPILE_NG;
                 }
 
+                if (GET_VM()->builtin_inline_index == INT_MAX) {
+                    rb_bug("builtin inline function index overflow:%s", builtin_func);
+                }
                 int inline_index = GET_VM()->builtin_inline_index++;
-                snprintf(inline_func, 0x20, "_bi%d", inline_index);
+                snprintf(inline_func, sizeof(inline_func), "_bi%d", inline_index);
                 builtin_func = inline_func;
                 args_node = NULL;
                 goto retry;
-- 
cgit v0.10.2


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]