gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/stream.h server/swf/Plac...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/stream.h server/swf/Plac...
Date: Tue, 15 May 2007 13:48:37 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/05/15 13:48:37

Modified files:
        .              : ChangeLog 
        server         : stream.h 
        server/swf     : PlaceObject2Tag.cpp 

Log message:
                * server/stream.{cpp,h} (skip_bytes): return a boolean value
                  for success/failure.
                * server/swf/PlaceObject2Tag.cpp (readPlaceAction): check
                  return from stream::skip_bytes.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3228&r2=1.3229
http://cvs.savannah.gnu.org/viewcvs/gnash/server/stream.h?cvsroot=gnash&r1=1.19&r2=1.20
http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf/PlaceObject2Tag.cpp?cvsroot=gnash&r1=1.9&r2=1.10

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3228
retrieving revision 1.3229
diff -u -b -r1.3228 -r1.3229
--- ChangeLog   15 May 2007 13:26:46 -0000      1.3228
+++ ChangeLog   15 May 2007 13:48:36 -0000      1.3229
@@ -1,5 +1,9 @@
 2007-05-15 Sandro Santilli <address@hidden>
 
+       * server/stream.{cpp,h} (skip_bytes): return a boolean value
+         for success/failure.
+       * server/swf/PlaceObject2Tag.cpp (readPlaceAction): check
+         return from stream::skip_bytes.
        * libbase/jpeg.cpp: fix typo introduced in last commit.
        * server/swf/PlaceObject2Tag.cpp (readPlaceActions): don't abort when
          reserved flag != 0.

Index: server/stream.h
===================================================================
RCS file: /sources/gnash/gnash/server/stream.h,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -b -r1.19 -r1.20
--- server/stream.h     15 May 2007 09:59:08 -0000      1.19
+++ server/stream.h     15 May 2007 13:48:37 -0000      1.20
@@ -134,14 +134,19 @@
 
                /// Discard given number of bytes
                //
-               /// Note: crossing a tag boundary triggers an error,
-               /// but I'm not sure we really want this --strk;
-               void skip_bytes(unsigned num)
+               ///
+               /// @return true on success, false on failure
+               ///     Possible failures:
+               ///     - skipping given number of bytes reaches end of stream.
+               ///     - skipping given number of bytes reaches end of
+               ///       current tag, if any.
+               ///
+               bool skip_bytes(unsigned num)
                {
                        // there's probably a better way, but
                        // it's the interface that counts atm
                        size_t curpos = get_position();
-                       set_position(curpos+num);
+                       return set_position(curpos+num);
                }
 
                /// Discard all bytes up to end of tag

Index: server/swf/PlaceObject2Tag.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/swf/PlaceObject2Tag.cpp,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- server/swf/PlaceObject2Tag.cpp      15 May 2007 13:08:07 -0000      1.9
+++ server/swf/PlaceObject2Tag.cpp      15 May 2007 13:48:37 -0000      1.10
@@ -17,7 +17,7 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
-/* $Id: PlaceObject2Tag.cpp,v 1.9 2007/05/15 13:08:07 strk Exp $ */
+/* $Id: PlaceObject2Tag.cpp,v 1.10 2007/05/15 13:48:37 strk Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -142,7 +142,16 @@
                                ". Skipping excessive bytes."),
                                event_length, readlen);
                        );
-                       in->skip_bytes(event_length - readlen);
+
+                       if ( ! in->skip_bytes(event_length - readlen) )
+                       {
+                               // TODO: should we throw a ParserException 
instead
+                               //       so to completely discard this tag ?
+                               IF_VERBOSE_MALFORMED_SWF(
+                               log_swferror(_("Bytes skipping failed."));
+                               );
+                               break;
+                       }
                }
 
                // 13 bits reserved, 19 bits used




reply via email to

[Prev in Thread] Current Thread [Next in Thread]