summaryrefslogtreecommitdiffhomepage
path: root/src/string.c
diff options
context:
space:
mode:
authorksss <[email protected]>2016-12-23 23:30:35 +0900
committerksss <[email protected]>2016-12-23 23:31:21 +0900
commitc626b823cabf8ee7acbdf57e44597de3974c5f17 (patch)
tree1b9ddabc7f0cf37dc4b58e38e030015d606425b1 /src/string.c
parent987daa64e387810e6871b9573bed97ae37d89a72 (diff)
downloadmruby-c626b823cabf8ee7acbdf57e44597de3974c5f17.tar.gz
mruby-c626b823cabf8ee7acbdf57e44597de3974c5f17.zip
Check overflow string length
Fix #3360
Diffstat (limited to 'src/string.c')
-rw-r--r--src/string.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/string.c b/src/string.c
index ce27cdaa1..2d5006612 100644
--- a/src/string.c
+++ b/src/string.c
@@ -756,6 +756,9 @@ mrb_str_concat(mrb_state *mrb, mrb_value self, mrb_value other)
s2 = mrb_str_ptr(other);
len = RSTR_LEN(s1) + RSTR_LEN(s2);
+ if (len < 0 || len >= MRB_INT_MAX) {
+ mrb_raise(mrb, E_ARGUMENT_ERROR, "string size too big");
+ }
if (RSTRING_CAPA(self) < len) {
resize_capa(mrb, s1, len);
}