diff options
author | Aleksey Lim <alsroot@member.fsf.org> | 2010-06-10 04:14:09 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2011-09-24 15:08:09 (GMT) |
commit | e3e7a0c058c842d6783d676bcc72ef69a47c4e00 (patch) | |
tree | 9c0de326199467681a5626b4cd2bf44cbae3ce90 | |
parent | 27d65a891c010cc327ead7cddfac2a35519dd374 (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) { |