Avoid integer overflow in sprintf(); fix #3439

This issue was reported by https://hackerone.com/aerodudrizzt
parent 642ab8ec
...@@ -116,8 +116,9 @@ mrb_fix2binstr(mrb_state *mrb, mrb_value x, int base) ...@@ -116,8 +116,9 @@ mrb_fix2binstr(mrb_state *mrb, mrb_value x, int base)
#define CHECK(l) do {\ #define CHECK(l) do {\
/* int cr = ENC_CODERANGE(result);*/\ /* int cr = ENC_CODERANGE(result);*/\
while (blen + (l) >= bsiz) {\ while ((l) >= bsiz - blen) {\
bsiz*=2;\ bsiz*=2;\
if (bsiz < 0) mrb_raise(mrb, E_ARGUMENT_ERROR, "too big specifier"); \
}\ }\
mrb_str_resize(mrb, result, bsiz);\ mrb_str_resize(mrb, result, bsiz);\
/* ENC_CODERANGE_SET(result, cr);*/\ /* ENC_CODERANGE_SET(result, cr);*/\
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment