CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 07/11/28 17:35:45
Modified files: . : ChangeLog server/swf : tag_loaders.cpp Log message: pretty-print about premature end of tag while inflating, add last error message when an error occurs during inflating. CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.4997&r2=1.4998 http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf/tag_loaders.cpp?cvsroot=gnash&r1=1.156&r2=1.157 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.4997 retrieving revision 1.4998 diff -u -b -r1.4997 -r1.4998 --- ChangeLog 28 Nov 2007 16:59:36 -0000 1.4997 +++ ChangeLog 28 Nov 2007 17:35:44 -0000 1.4998 @@ -1,5 +1,11 @@ 2007-11-28 Sandro Santilli <[EMAIL PROTECTED]> + * server/swf/tag_loaders.cpp (inflate_wrapper): pretty-print about + premature end of tag while inflating, add last error message when + an error occurs during inflating. + +2007-11-28 Sandro Santilli <[EMAIL PROTECTED]> + * gui/cpp.cpp: fix build with ENABLE_REGION_UPDATES_DEBUGGING defined. * server/swf/tag_loaders.cpp (inflate_wrapper): don't read past Index: server/swf/tag_loaders.cpp =================================================================== RCS file: /sources/gnash/gnash/server/swf/tag_loaders.cpp,v retrieving revision 1.156 retrieving revision 1.157 diff -u -b -r1.156 -r1.157 --- server/swf/tag_loaders.cpp 28 Nov 2007 16:16:30 -0000 1.156 +++ server/swf/tag_loaders.cpp 28 Nov 2007 17:35:44 -0000 1.157 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: tag_loaders.cpp,v 1.156 2007/11/28 16:16:30 strk Exp $ */ +/* $Id: tag_loaders.cpp,v 1.157 2007/11/28 17:35:44 strk Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -341,7 +341,7 @@ int err = inflateInit(&d_stream); if (err != Z_OK) { IF_VERBOSE_MALFORMED_SWF( - log_swferror(_("inflate_wrapper() inflateInit() returned %d"), err); + log_swferror(_("inflate_wrapper() inflateInit() returned %d (%s)"), err, d_stream.msg); ); return; } @@ -356,7 +356,18 @@ unsigned int chunkSize = CHUNKSIZE; assert(in.get_position() <= endTagPos); unsigned int availableBytes = endTagPos - in.get_position(); - if ( availableBytes < chunkSize ) chunkSize = availableBytes; + if ( availableBytes < chunkSize ) + { + if ( ! availableBytes ) + { + // nothing more to read + IF_VERBOSE_MALFORMED_SWF( + log_swferror(_("inflate_wrapper(): no end of zstream found within swf tag boundaries")); + ); + break; + } + chunkSize = availableBytes; + } // Fill the buffer assert(sizeof(char) == sizeof(uint8_t)); @@ -365,11 +376,16 @@ d_stream.avail_in = chunkSize; err = inflate(&d_stream, Z_SYNC_FLUSH); - if (err == Z_STREAM_END) break; + if (err == Z_STREAM_END) + { + // correct end + break; + } + if (err != Z_OK) { IF_VERBOSE_MALFORMED_SWF( - log_swferror(_("inflate_wrapper() inflate() returned %d"), err); + log_swferror(_("inflate_wrapper() inflate() returned %d (%s)"), err, d_stream.msg); ); break; } @@ -378,7 +394,7 @@ err = inflateEnd(&d_stream); if (err != Z_OK) { - log_error(_("inflate_wrapper() inflateEnd() return %d"), err); + log_error(_("inflate_wrapper() inflateEnd() return %d (%s)"), err, d_stream.msg); } } #endif // HAVE_ZLIB_H _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit