diff options
| author | Krzysztof Kosi??ski <tweenk.pl@gmail.com> | 2010-01-31 20:38:02 +0000 |
|---|---|---|
| committer | Krzysztof KosiĆski <tweenk.pl@gmail.com> | 2010-01-31 20:38:02 +0000 |
| commit | bbe0a5ec437ee71bdf3921fae494bd209a7b56d2 (patch) | |
| tree | 8a34823506d23eb07d9f9fb06839bdb7845683c9 | |
| parent | Fix the position of joined nodes to match 0.47 (diff) | |
| download | inkscape-bbe0a5ec437ee71bdf3921fae494bd209a7b56d2.tar.gz inkscape-bbe0a5ec437ee71bdf3921fae494bd209a7b56d2.zip | |
Fix crash when trying to import a corrupted PNG file.
Fixed bugs:
- https://launchpad.net/bugs/271401
(bzr r9040)
| -rw-r--r-- | src/sp-image.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/sp-image.cpp b/src/sp-image.cpp index daf5e9e88..22b836703 100644 --- a/src/sp-image.cpp +++ b/src/sp-image.cpp @@ -328,6 +328,16 @@ static GdkPixbuf* pixbuf_new_from_file( const char *filename, time_t &modTime, g ); if ( pngPtr ) { + if ( setjmp(png_jmpbuf(pngPtr)) ) + { + // libpng calls longjmp to return here if an error occurs. + png_destroy_read_struct( &pngPtr, &infoPtr, NULL ); + fclose(fp); + gdk_pixbuf_loader_close(loader, NULL); + g_object_unref(loader); + return NULL; + } + infoPtr = png_create_info_struct( pngPtr ); //endPtr = png_create_info_struct( pngPtr ); |
