Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey 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)
commite3e7a0c058c842d6783d676bcc72ef69a47c4e00 (patch)
tree9c0de326199467681a5626b4cd2bf44cbae3ce90
parent27d65a891c010cc327ead7cddfac2a35519dd374 (diff)
Check for PNG valid image before reading metadata
-rw-r--r--src/tuxpaint.c9
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)
{