diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2015-06-29 10:27:09 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2015-06-29 10:27:09 +0900 |
| commit | b0ec992d4170ed06bd96020edbc889a224b23be1 (patch) | |
| tree | f7fafd35a4f24a1c66fb88546401f87398b1b4c3 | |
| parent | 96d6e45acde2ba836aebacfbf200818c7e2db357 (diff) | |
| parent | a41f5eb23fad13ce8037050b7a2331c1c7dd9e6f (diff) | |
| download | mruby-b0ec992d4170ed06bd96020edbc889a224b23be1.tar.gz mruby-b0ec992d4170ed06bd96020edbc889a224b23be1.zip | |
Merge pull request #2866 from jurriaan/fix-crash
Fix segfault found using afl-fuzz
| -rw-r--r-- | mrbgems/mruby-compiler/core/codegen.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c index d2eeef203..cefde8b7b 100644 --- a/mrbgems/mruby-compiler/core/codegen.c +++ b/mrbgems/mruby-compiler/core/codegen.c @@ -2652,13 +2652,17 @@ loop_break(codegen_scope *s, node *tree) } loop = s->loop; - while (loop->type == LOOP_BEGIN) { + while (loop && loop->type == LOOP_BEGIN) { genop_peep(s, MKOP_A(OP_POPERR, 1), NOVAL); loop = loop->prev; } - while (loop->type == LOOP_RESCUE) { + while (loop && loop->type == LOOP_RESCUE) { loop = loop->prev; } + if (!loop) { + codegen_error(s, "unexpected break"); + } + if (loop->type == LOOP_NORMAL) { int tmp; |
