gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/swf/tag_loaders.cpp


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/swf/tag_loaders.cpp
Date: Wed, 07 Feb 2007 16:29:36 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/02/07 16:29:36

Modified files:
        .              : ChangeLog 
        server/swf     : tag_loaders.cpp 

Log message:
                * server/swf/tag_loaders.cpp: use log_swferror where 
appropriate,
                  (swf_event::read): tolerate malformed header.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2262&r2=1.2263
http://cvs.savannah.gnu.org/viewcvs/gnash/server/swf/tag_loaders.cpp?cvsroot=gnash&r1=1.72&r2=1.73

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2262
retrieving revision 1.2263
diff -u -b -r1.2262 -r1.2263
--- ChangeLog   7 Feb 2007 13:31:26 -0000       1.2262
+++ ChangeLog   7 Feb 2007 16:29:35 -0000       1.2263
@@ -1,8 +1,7 @@
-M ChangeLog
-M server/as_object.cpp
-M server/types.cpp
-M server/asobj/Object.cpp
-M server/vm/fn_call.h
+2007-02-07 Sandro Santilli <address@hidden>
+
+       * server/swf/tag_loaders.cpp: use log_swferror where appropriate,
+         (swf_event::read): tolerate malformed header.
 
 2007-02-07 Sandro Santilli <address@hidden>
 

Index: server/swf/tag_loaders.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/swf/tag_loaders.cpp,v
retrieving revision 1.72
retrieving revision 1.73
diff -u -b -r1.72 -r1.73
--- server/swf/tag_loaders.cpp  7 Feb 2007 09:07:36 -0000       1.72
+++ server/swf/tag_loaders.cpp  7 Feb 2007 16:29:36 -0000       1.73
@@ -14,7 +14,7 @@
 // along with this program; if not, write to the Free Software
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
-/* $Id: tag_loaders.cpp,v 1.72 2007/02/07 09:07:36 strk Exp $ */
+/* $Id: tag_loaders.cpp,v 1.73 2007/02/07 16:29:36 strk Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -141,9 +141,11 @@
                }
                else
                {
-       log_warning("frame_label_loader end position " SIZET_FMT ", "
-                       "read up to " SIZET_FMT " (Malformed SWF?)",
+                       IF_VERBOSE_MALFORMED_SWF(
+       log_swferror("frame_label_loader end position " SIZET_FMT ", "
+                       "read up to " SIZET_FMT,
                        end_tag, curr_pos);
+                       );
                }
        }
 
@@ -735,8 +737,10 @@
        }
        else
        {
-               log_error("define_font_info_loader: "
+               IF_VERBOSE_MALFORMED_SWF(
+               log_swferror("define_font_info_loader: "
                        "can't find font w/ id %d", font_id);
+               );
        }
 }
 
@@ -860,15 +864,30 @@
                        action_buffer action;
                        action.read(in);
 
-                       if (action.get_length() != event_length)
+                       size_t readlen = action.size();
+                       if (readlen > event_length)
                        {
-                               log_error("swf_event::read(), "
+                               IF_VERBOSE_MALFORMED_SWF(
+                               log_swferror("swf_event::read(), "
                                        "event_length = %d, "
-                                       "but read %lu",
-                                       event_length,
-                                       static_cast<unsigned 
long>(action.get_length()));
+                                       "but read " SIZET_FMT
+                                       ". Breaking for safety.",
+                                       event_length, readlen);
+                               );
+                               // or should we just continue here ?
                                break;
                        }
+                       else if ( readlen < event_length )
+                       {
+                               IF_VERBOSE_MALFORMED_SWF(
+                               log_swferror("swf_event::read(), "
+                                       "event_length = %d, "
+                                       "but read " SIZET_FMT 
+                                       ". Skipping excessive bytes.",
+                                       event_length, readlen);
+                               );
+                               in->skip_bytes(event_length - readlen);
+                       }
 
                        // 13 bits reserved, 19 bits used
                        static const event_id s_code_bits[19] =
@@ -899,7 +918,9 @@
                        // Let's see if the event flag we received is for an 
event that we know of
                        if ((pow(2.0, int( sizeof(s_code_bits) / 
sizeof(s_code_bits[0]) )) - 1) < flags)
                        {
-                               log_error("swf_event::read() -- unknown / 
unhandled event type received, flags = 0x%x", flags);
+                               IF_VERBOSE_MALFORMED_SWF(
+                               log_swferror("swf_event::read() -- unknown / 
unhandled event type received, flags = 0x%x", flags);
+                               );
                        }
 
                        for (int i = 0, mask = 1; i < 
int(sizeof(s_code_bits)/sizeof(s_code_bits[0])); i++, mask <<= 1)
@@ -1184,7 +1205,9 @@
        // would be a malformed SWF
        if ( ! dynamic_cast<movie_def_impl*>(m) )
        {
-               log_error("Malformed SWF (nested DEFINESPRITE tags)");
+               IF_VERBOSE_MALFORMED_SWF(
+               log_swferror("nested DEFINESPRITE tags");
+               );
        }
 
        // will automatically read the sprite
@@ -1404,7 +1427,9 @@
                // something smarter, if we agree on semantic
                if (source_movie == m)
                {
-                   log_warning("Won't let movie import it's own exported 
symbols... ");
+                   IF_VERBOSE_MALFORMED_SWF(
+                   log_swferror("Movie attempts to import symbols from 
itself.");
+                   );
                    return;
                }
        }
@@ -1583,7 +1608,9 @@
 
                if (! (sample_rate >= 0 && sample_rate <= 3))
                {
-                       log_error("Bad sample rate read from SWF header.");
+                       IF_VERBOSE_MALFORMED_SWF(
+                       log_swferror("Bad sample rate read from SWF header.");
+                       );
                        return;
                }
 
@@ -1676,7 +1703,9 @@
        {
                if (s_sound_handler)
                {
-                       log_error("start_sound_loader: sound_id %d is not 
defined", sound_id);
+                       IF_VERBOSE_MALFORMED_SWF(
+                       log_swferror("start_sound_loader: sound_id %d is not 
defined", sound_id);
+                       );
                }
        }
        
@@ -1727,7 +1756,9 @@
 
        if (! (sample_rate >= 0 && sample_rate <= 3))
        {
-               log_error("Bad sample rate read from SWF header.");
+               IF_VERBOSE_MALFORMED_SWF(
+               log_swferror("Bad sample rate read from SWF header.");
+               );
                return;
        }
 




reply via email to

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