ref: 80888726b9e5d8d62a8b1e76615bb11a1c9ca191
parent: 2ebbe91fe8fe87587e688bae49732d82a2f1f8b5
author: IIMarckus <[email protected]>
date: Thu Jun 29 18:45:30 EDT 2017
Check some errors (not enough). malloc can always fail. Check to avoid null dereference. malloc(0) is well defined but leads to an eventual crash on some systems. Check it too.
--- a/tools/palette.c
+++ b/tools/palette.c
@@ -50,9 +50,17 @@
fseek(f, 0, SEEK_END);
size = ftell(f);
+ if (!size) {
+ fprintf(stderr, "empty file %s\n", palette_filename);
+ exit(1);
+ }
rewind(f);
bytes = malloc(size);
+ if (!bytes) {
+ fprintf(stderr, "malloc failure\n");
+ exit(1);
+ }
fseek(f, 0, SEEK_SET);
fread(bytes, 1, size, f);
--- a/tools/pokemon_animation.c
+++ b/tools/pokemon_animation.c
@@ -54,9 +54,17 @@
fseek(f, 0, SEEK_END);
size = ftell(f);
+ if (!size) {
+ fprintf(stderr, "empty file %s\n", tilemap_filename);
+ exit(1);
+ }
rewind(f);
tilemap = malloc(size);
+ if (!tilemap) {
+ fprintf(stderr, "malloc failure\n");
+ exit(1);
+ }
fread(tilemap, 1, size, f);
fclose(f);
--- a/tools/pokemon_animation_graphics.c
+++ b/tools/pokemon_animation_graphics.c
@@ -90,8 +90,16 @@
}
fseek(f, 0, SEEK_END);
graphics_size = ftell(f);
+ if (!graphics_size) {
+ fprintf(stderr, "empty file %s\n", graphics_filename);
+ exit(1);
+ }
rewind(f);
graphics = malloc(graphics_size);
+ if (!graphics) {
+ fprintf(stderr, "malloc failure\n");
+ exit(1);
+ }
fread(graphics, 1, graphics_size, f);
fclose(f);