Commit 9479e4e2 authored by Masaki Muranaka's avatar Masaki Muranaka

Fix underlying memory leaks. When realloc is failed, memories are leaked.

parent 8464cac6
...@@ -389,12 +389,19 @@ read_rite_section_lineno_file(mrb_state *mrb, FILE *fp, size_t sirep) ...@@ -389,12 +389,19 @@ read_rite_section_lineno_file(mrb_state *mrb, FILE *fp, size_t sirep)
//Read Binary Data Section //Read Binary Data Section
for (n = 0, i = sirep; n < nirep; n++, i++) { for (n = 0, i = sirep; n < nirep; n++, i++) {
void *ptr;
if (fread(buf, record_header_size, 1, fp) == 0) { if (fread(buf, record_header_size, 1, fp) == 0) {
result = MRB_DUMP_READ_FAULT; result = MRB_DUMP_READ_FAULT;
goto error_exit; goto error_exit;
} }
buf_size = bin_to_uint32(&buf[0]); buf_size = bin_to_uint32(&buf[0]);
buf = (uint8_t *)mrb_realloc(mrb, buf, buf_size); ptr = mrb_realloc(mrb, buf, buf_size);
if (!ptr) {
result = MRB_DUMP_GENERAL_FAILURE;
goto error_exit;
}
buf = (uint8_t *)ptr;
if (fread(&buf[record_header_size], buf_size - record_header_size, 1, fp) == 0) { if (fread(&buf[record_header_size], buf_size - record_header_size, 1, fp) == 0) {
result = MRB_DUMP_READ_FAULT; result = MRB_DUMP_READ_FAULT;
...@@ -439,12 +446,20 @@ read_rite_section_irep_file(mrb_state *mrb, FILE *fp) ...@@ -439,12 +446,20 @@ read_rite_section_irep_file(mrb_state *mrb, FILE *fp)
//Read Binary Data Section //Read Binary Data Section
for (n = 0, i = sirep; n < nirep; n++, i++) { for (n = 0, i = sirep; n < nirep; n++, i++) {
void *ptr;
if (fread(buf, record_header_size, 1, fp) == 0) { if (fread(buf, record_header_size, 1, fp) == 0) {
result = MRB_DUMP_READ_FAULT; result = MRB_DUMP_READ_FAULT;
goto error_exit; goto error_exit;
} }
buf_size = bin_to_uint32(&buf[0]); buf_size = bin_to_uint32(&buf[0]);
buf = (uint8_t *)mrb_realloc(mrb, buf, buf_size); ptr = mrb_realloc(mrb, buf, buf_size);
if (!ptr) {
result = MRB_DUMP_GENERAL_FAILURE;
goto error_exit;
}
buf = (uint8_t *)ptr;
if (fread(&buf[record_header_size], buf_size - record_header_size, 1, fp) == 0) { if (fread(&buf[record_header_size], buf_size - record_header_size, 1, fp) == 0) {
result = MRB_DUMP_READ_FAULT; result = MRB_DUMP_READ_FAULT;
goto error_exit; goto error_exit;
......
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