summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-compiler/core/codegen.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2017-01-23 16:53:31 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2017-01-23 16:53:31 +0900
commitf0f095bc135c4d2e6f6d54d6b5683db77708369b (patch)
tree81e516765575e393b476c0ae76c6a60ecd698e46 /mrbgems/mruby-compiler/core/codegen.c
parent3ce82603a56f2b9480e2bd889dd98f813b868757 (diff)
downloadmruby-f0f095bc135c4d2e6f6d54d6b5683db77708369b.tar.gz
mruby-f0f095bc135c4d2e6f6d54d6b5683db77708369b.zip
Fix a double free problem in codegen.c; fix #3378
This issue was first reported by https://hackerone.com/geeknik The fix was proposed by @titanous
Diffstat (limited to 'mrbgems/mruby-compiler/core/codegen.c')
-rw-r--r--mrbgems/mruby-compiler/core/codegen.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/mrbgems/mruby-compiler/core/codegen.c b/mrbgems/mruby-compiler/core/codegen.c
index fae12b288..eae0492ce 100644
--- a/mrbgems/mruby-compiler/core/codegen.c
+++ b/mrbgems/mruby-compiler/core/codegen.c
@@ -2844,6 +2844,7 @@ scope_finish(codegen_scope *s)
memcpy(fname, s->filename, fname_len);
fname[fname_len] = '\0';
irep->filename = fname;
+ irep->own_filename = TRUE;
}
irep->nlocals = s->nlocals;
@@ -2951,9 +2952,6 @@ mrb_generate_code(mrb_state *mrb, parser_state *p)
return proc;
}
MRB_CATCH(&scope->jmp) {
- if (scope->filename == scope->irep->filename) {
- scope->irep->filename = NULL;
- }
mrb_irep_decref(mrb, scope->irep);
mrb_pool_close(scope->mpool);
return NULL;