diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-08-19 21:52:23 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-08-19 21:52:23 +0900 |
| commit | d49f8517a6d2350eb1ed2642749f3994a9a2d056 (patch) | |
| tree | 5a4396a3b9e3a268d29f961309ea8d7819953438 | |
| parent | c7fda2232b690f5e68a5d1f72e9dc8cd21682703 (diff) | |
| parent | ff9582833d92521e2c724ca944c618974b0608d8 (diff) | |
| download | mruby-d49f8517a6d2350eb1ed2642749f3994a9a2d056.tar.gz mruby-d49f8517a6d2350eb1ed2642749f3994a9a2d056.zip | |
Merge pull request #2540 from cubicdaiya/issues/read_irep_record_error_handlings
Fix error hanldlings in read_irep_record().
| -rw-r--r-- | src/load.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/load.c b/src/load.c index 0a1436c77..9e8325022 100644 --- a/src/load.c +++ b/src/load.c @@ -164,11 +164,18 @@ read_irep_record(mrb_state *mrb, const uint8_t *bin, size_t *len, mrb_bool alloc mrb_irep *irep = read_irep_record_1(mrb, bin, len, alloc); size_t i; + if (irep == NULL) { + return NULL; + } + bin += *len; for (i=0; i<irep->rlen; i++) { size_t rlen; irep->reps[i] = read_irep_record(mrb, bin, &rlen, alloc); + if (irep->reps[i] == NULL) { + return NULL; + } bin += rlen; *len += rlen; } |
