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@member.fsf.org>2010-06-10 04:14:09 (GMT)
commit4bc7d80579a64f4a2c72863f212746c0db85f4e1 (patch)
treee52824834780a5c51b09473443cdd3b15652992f
parentae9f6a53197193eff788ba7efc90c2e1fde4a7ac (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)
{