CVSROOT: /sources/gnash Module name: gnash Changes by: Sandro Santilli <strk> 07/12/03 11:34:08
Modified files: . : ChangeLog server/swf : tag_loaders.cpp Log message: ensure needed bytes are available, don't attempt to read 0 bytes from stream (malformed swf). CVSWeb URLs: http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.5064&r2=1.5065 http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf/tag_loaders.cpp?cvsroot=gnash&r1=1.157&r2=1.158 Patches: Index: ChangeLog =================================================================== RCS file: /sources/gnash/gnash/ChangeLog,v retrieving revision 1.5064 retrieving revision 1.5065 diff -u -b -r1.5064 -r1.5065 --- ChangeLog 3 Dec 2007 11:09:27 -0000 1.5064 +++ ChangeLog 3 Dec 2007 11:34:07 -0000 1.5065 @@ -1,5 +1,8 @@ 2007-12-03 Sandro Santilli <[EMAIL PROTECTED]> + * server/swf/tag_loaders.cpp (sound_stream_block_loader): ensure + needed bytes are available, don't attempt to read 0 bytes + from stream (malformed swf). * server/stream.{cpp,h}: drop unused get_tag_length, forbid seek-backs to before any opened tag start. * server/parser/movie_def_impl.{cpp,h}: mutex-protect Index: server/swf/tag_loaders.cpp =================================================================== RCS file: /sources/gnash/gnash/server/swf/tag_loaders.cpp,v retrieving revision 1.157 retrieving revision 1.158 diff -u -b -r1.157 -r1.158 --- server/swf/tag_loaders.cpp 28 Nov 2007 17:35:44 -0000 1.157 +++ server/swf/tag_loaders.cpp 3 Dec 2007 11:34:08 -0000 1.158 @@ -17,7 +17,7 @@ // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA // -/* $Id: tag_loaders.cpp,v 1.157 2007/11/28 17:35:44 strk Exp $ */ +/* $Id: tag_loaders.cpp,v 1.158 2007/12/03 11:34:08 strk Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1303,9 +1303,22 @@ unsigned int sample_count = sinfo->getSampleCount(); // discard garbage data if format is MP3 - if (format == media::AUDIO_CODEC_MP3) in->skip_bytes(4); + if (format == media::AUDIO_CODEC_MP3) + { + //log_debug("Skipping 4 garbage bytes of MP3 format... (CHECKME!)"); + in->ensureBytes(4); + in->skip_bytes(4); + } unsigned int data_bytes = in->get_tag_end_position() - in->get_position(); + if ( ! data_bytes ) + { + IF_VERBOSE_MALFORMED_SWF( + log_swferror("No data bytes left to read in SOUNDSTREAMBLOCK tag"); + ); + return; + } + unsigned char *data = new unsigned char[data_bytes]; in->read((char*)data, data_bytes); _______________________________________________ Gnash-commit mailing list Gnash-commit@gnu.org http://lists.gnu.org/mailman/listinfo/gnash-commit