summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
AgeCommit message (Collapse)Author
2017-03-04Unshare popped TT_ENV objects.Yukihiro "Matz" Matsumoto
2017-03-04Limit ecall() recursion levels; fix #3466Yukihiro "Matz" Matsumoto
2017-03-02Define jmpbuf_id outside of `extern "C"`; ref #3470Yukihiro "Matz" Matsumoto
2017-03-02Fix possible stack overflow for `method_missing`; fix #3478Yukihiro "Matz" Matsumoto
Instead of shifting mruby VM stack, we always use CALL_MAXARGS.
2017-03-02Reorganize C++ exceptions; ref #3470Yukihiro "Matz" Matsumoto
There are 3 levels of C++ exception handling: * default - no C++ exception (use setjmp/longjmp) * enable_cxx_exception (use C++ exceptions with C ABI) * enable_cxx_abi (use C++ ABI including exceptions)
2017-03-01`ci` may be moved during `mrb_convert_type()`; ref #3474Yukihiro "Matz" Matsumoto
2017-02-27Check if OP_RETURN cross C function boundary; fix #3462Yukihiro "Matz" Matsumoto
2017-02-27Fixed ecall() invoked too early; fix #3464Yukihiro "Matz" Matsumoto
2017-02-27Update local variable only after the value is checked.Yukihiro "Matz" Matsumoto
2017-02-27Clear block arg when method_missing takes *args.Yukihiro "Matz" Matsumoto
2017-02-27Stack may be reallocated in mrb_run(); fix #3465Yukihiro "Matz" Matsumoto
2017-02-27Always keep block argument space in stack; fix #3469Yukihiro "Matz" Matsumoto
2017-02-15Prohibit too deep `mrb_funcall()` recursion; ref #3421Yukihiro "Matz" Matsumoto
`mrb_funcall()` recursion can cause stack overflow easily, so recursion depth is now limited to MRB_FUNCALL_DEPTH_MAX, which default value is 512.
2017-02-15Preallocate SystemStackError; ref #3421Yukihiro "Matz" Matsumoto
2017-02-14Extend mruby stack when keep is bigger than room; fix #3421Yukihiro "Matz" Matsumoto
But #3421 still cause stack overflow error due to infinite recursion. To prevent overflow, we need to add different stack depth check.
2017-02-13Should handle `break` from funcall(); fix #3434Yukihiro "Matz" Matsumoto
This issue was reported by https://hackerone.com/d4nny
2017-02-13Fixed too much value_copy() when block is not given; fix #3440Yukihiro "Matz" Matsumoto
The issue was reported by https://hackerone.com/titanous
2017-02-11Avoid direct return from ecall(); fix #3441Yukihiro "Matz" Matsumoto
There's incompatibility left for mruby. When you return from `ensure` clause, mruby simply ignores the return value. CRuby returns from the method squashing the exception raised. ``` def f no_such_method() # NoMethodError ensure return 22 end p f() # CRuby prints `22` ```
2017-02-11`ecall()` should preserve stack address referenced from ci[1].Yukihiro "Matz" Matsumoto
OP_RETURN accesses ci[1]->stackent that might be broken; fix #3442
2017-02-08Add MRB_TT_PROC check to OP_SUPER as well; fix #3432Yukihiro "Matz" Matsumoto
2017-02-08Check if m->env is NULL before dereferencing it; fix #3436Yukihiro "Matz" Matsumoto
2017-02-08Fixed a bug in ci address shifting; fix #3423Yukihiro "Matz" Matsumoto
Dinko Galetic and Denis Kasak reported the issue and the fix. (via https://hackerone.com/dgaletic).
2017-02-04Make `eval` to use trampoline technique; fix #3415Yukihiro "Matz" Matsumoto
Now `eval()` can call Fiber.yield etc.
2017-01-25Copy mrb_float values from pool when MRB_WORD_BOXING; ref #3396Yukihiro "Matz" Matsumoto
2017-01-23The ensure clause should keep its ci after its execution; fix #3406Yukihiro "Matz" Matsumoto
This issue was reported by https://hackerone.com/ston3
2017-01-21Stack position may be bigger than stack bottom; fix #3401Yukihiro "Matz" Matsumoto
This issue was reported by https://hackerone.com/titanous
2017-01-18Initialize callinfo->acc; ref #3243Yukihiro "Matz" Matsumoto
2017-01-12Add proper given argument number in the wrong-number-argument error.Yukihiro "Matz" Matsumoto
2017-01-12Add proper stack size calculation; fix #3398Yukihiro "Matz" Matsumoto
This issue was reported by https://hackerone.com/ssarong
2017-01-11Use temporary variable to avoid potential crash; fix #3387Yukihiro "Matz" Matsumoto
This issue was original reported by https://hackerone.com/icanthack https://hackerone.com/titanous suggested the solution. `regs` may be reallocated in the function call.
2017-01-11Check if ci->target_class is NULL before dereferencingYukihiro "Matz" Matsumoto
close #3389 This issue was reported by https://hackerone.com/ston3
2017-01-02use size_t instead of intYukihiro "Matz" Matsumoto
2016-12-30method_missing() may have CALL_MAXARGS-1 arguments; fix #3351Yukihiro "Matz" Matsumoto
The issue was reported by https://hackerone.com/ston3
2016-12-13Restore callinfo offset in mrb_yield_with_class()Yukihiro "Matz" Matsumoto
2016-12-05Merge pull request #3318 from bouk/splat-stackYukihiro "Matz" Matsumoto
Fix stack move segfaulting in OP_ARYCAT
2016-12-03Merge branch 'method-missing-segfault' of https://github.com/bouk/mruby into ↵Yukihiro "Matz" Matsumoto
bouk-method-missing-segfault
2016-12-01Fix stack move segfaulting in OP_ARYCATBouke van der Bijl
Reported by https://hackerone.com/haquaman Testcase (couldn't get it to work as a test): def nil.b b *nil end nil.b
2016-11-24Fix instances where return value of mrb_method_search_vm is uncheckedFrancois Chagnon
Reported by @charliesome
2016-11-24Fix segfault when defining class inside instance_exec on primitiveBouke van der Bijl
2016-11-07fixed wrong stack adjustment for ensure clauses; fix #3175Yukihiro "Matz" Matsumoto
2016-11-05associate REnv to the executing block; fix #3214Yukihiro "Matz" Matsumoto
2016-10-20Move to_proc conversion from OP_ENTER to OP_SENDB; fix #3227Yukihiro "Matz" Matsumoto
2016-09-20Fix return value type of bytecode_decoderKazuaki Tanaka
2016-09-20Bytecode decoder support, MRB_BYTECODE_DECODE_OPTIONKazuaki Tanaka
2016-09-06surpress warning when MRB_DISABLE_STDIOyuri
2016-09-05Should clear method nameksss
- Fix method name in top-level - Fix SEGV when call Exception#backtrace if callinfo over CALLINFO_INIT_SIZE(32)
2016-07-14Should raise LocalJumpError when no block givenksss
2016-05-10use mrb_int_mul_overflow()cremno
2016-05-09Remove needless assignmentKouhei Sutou
d4ee409ae912dec6eb719a5727da4566f817d9d8 should remove this line.
2016-04-27Use stack directlyKenji Okimoto
See https://github.com/mruby/mruby/pull/3142#issuecomment-201138873