diff options
author | Aleksey Lim <alsroot@member.fsf.org> | 2010-06-10 04:14:09 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@member.fsf.org> | 2010-06-10 04:14:09 (GMT) |
commit | 4bc7d80579a64f4a2c72863f212746c0db85f4e1 (patch) | |
tree | e52824834780a5c51b09473443cdd3b15652992f | |
parent | ae9f6a53197193eff788ba7efc90c2e1fde4a7ac (diff) |
Check for PNG valid image before reading metadata
-rw-r--r-- | src/tuxpaint.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/tuxpaint.c b/src/tuxpaint.c index d9f98d1..6d271b3 100644 --- a/src/tuxpaint.c +++ b/src/tuxpaint.c @@ -19881,6 +19881,7 @@ void load_embedded_data(char *fname, SDL_Surface * org_surf) int ldelta, ldata, fgnd, bgnd; int num_unknowns = 0; SDL_Surface *aux_surf; + unsigned char png_sig[8]; png_structp png_ptr; png_infop info_ptr; @@ -19898,6 +19899,14 @@ void load_embedded_data(char *fname, SDL_Surface * org_surf) return; } + fread(png_sig, 1, sizeof(png_sig), fp); + if (png_sig_cmp(png_sig, 0, sizeof(png_sig)) != 0) + { + fprintf(stderr, "\nError: Wrong PNG image!\n%s\n\n", fname); + return; + } + fseek(fp, 0, SEEK_SET); + png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); if (png_ptr == NULL) { |