From 921798be01294f45dfcdce2133460a2e9a9f40ec Mon Sep 17 00:00:00 2001 From: Tatsuhiko Kubo Date: Thu, 28 Aug 2014 05:19:09 +0900 Subject: Fix error handlings for fprintf(). --- src/dump.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) (limited to 'src/dump.c') diff --git a/src/dump.c b/src/dump.c index e67eabbc8..1eff501f9 100644 --- a/src/dump.c +++ b/src/dump.c @@ -987,11 +987,20 @@ mrb_dump_irep_cfunc(mrb_state *mrb, mrb_irep *irep, int debug_info, FILE *fp, co result = mrb_dump_irep(mrb, irep, debug_info, &bin, &bin_size); if (result == MRB_DUMP_OK) { - fprintf(fp, "#include \n"); /* for uint8_t under at least Darwin */ - fprintf(fp, "const uint8_t %s[] = {", initname); + if (fprintf(fp, "#include \n") < 0) { /* for uint8_t under at least Darwin */ + mrb_free(mrb, bin); + return MRB_DUMP_WRITE_FAULT; + } + if (fprintf(fp, "const uint8_t %s[] = {", initname) < 0) { + mrb_free(mrb, bin); + return MRB_DUMP_WRITE_FAULT; + } while (bin_idx < bin_size) { if (bin_idx % 16 == 0) fputs("\n", fp); - fprintf(fp, "0x%02x,", bin[bin_idx++]); + if (fprintf(fp, "0x%02x,", bin[bin_idx++]) < 0) { + mrb_free(mrb, bin); + return MRB_DUMP_WRITE_FAULT; + } } fputs("\n};\n", fp); } -- cgit v1.2.3 From 7d9b5132a5bf2bc674f340798875aab3e15aeeff Mon Sep 17 00:00:00 2001 From: Tatsuhiko Kubo Date: Thu, 28 Aug 2014 05:29:25 +0900 Subject: Fix error handlings for fputs(). --- src/dump.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/dump.c') diff --git a/src/dump.c b/src/dump.c index 1eff501f9..f529c4f02 100644 --- a/src/dump.c +++ b/src/dump.c @@ -996,13 +996,21 @@ mrb_dump_irep_cfunc(mrb_state *mrb, mrb_irep *irep, int debug_info, FILE *fp, co return MRB_DUMP_WRITE_FAULT; } while (bin_idx < bin_size) { - if (bin_idx % 16 == 0) fputs("\n", fp); + if (bin_idx % 16 == 0) { + if (fputs("\n", fp) == EOF) { + mrb_free(mrb, bin); + return MRB_DUMP_WRITE_FAULT; + } + } if (fprintf(fp, "0x%02x,", bin[bin_idx++]) < 0) { mrb_free(mrb, bin); return MRB_DUMP_WRITE_FAULT; } } - fputs("\n};\n", fp); + if (fputs("\n};\n", fp) == EOF) { + mrb_free(mrb, bin); + return MRB_DUMP_WRITE_FAULT; + } } mrb_free(mrb, bin); -- cgit v1.2.3