<div dir="ltr">What's the symptom ?<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 20, 2015 at 7:19 PM, Jean-Baptiste Kempf <span dir="ltr"><<a href="mailto:jb@videolan.org" target="_blank">jb@videolan.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">I don't seem able to apply this patch.<br>
<br>
Le 20/02/2015 16:41, Steve Lhomme a écrit :<div class="HOEnZb"><div class="h5"><br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Replaces the previous similar patch from a few minutes ago with more<br>
checks.<br>
<br>
---<br>
  modules/demux/mkv/demux.cpp                  |  2 +-<br>
  modules/demux/mkv/matroska_<u></u>segment.cpp       | 12 ++++++------<br>
  modules/demux/mkv/matroska_<u></u>segment_parse.cpp | 14 +++++++-------<br>
  3 files changed, 14 insertions(+), 14 deletions(-)<br>
<br>
diff --git a/modules/demux/mkv/demux.cpp b/modules/demux/mkv/demux.cpp<br>
index 1feca55..21618f4 100644<br>
--- a/modules/demux/mkv/demux.cpp<br>
+++ b/modules/demux/mkv/demux.cpp<br>
@@ -519,7 +519,7 @@ matroska_stream_c<br>
*demux_sys_t::<u></u>AnalyseAllSegmentsFound( demux_t *p_demux, EbmlS<br>
                      // find the families of this segment<br>
                      KaxInfo *p_info = static_cast<KaxInfo*>(p_l1);<br>
                      b_keep_segment = b_initial;<br>
-                    if( unlikely( p_info->GetSize() >= SIZE_MAX ) )<br>
+                    if( unlikely( p_info->IsFiniteSize() &&<br>
p_info->GetSize() >= SIZE_MAX ) )<br>
                      {<br>
                          msg_Err( p_demux, "KaxInfo too big aborting" );<br>
                          break;<br>
diff --git a/modules/demux/mkv/matroska_<u></u>segment.cpp<br>
b/modules/demux/mkv/matroska_<u></u>segment.cpp<br>
index df24096..f71df70 100644<br>
--- a/modules/demux/mkv/matroska_<u></u>segment.cpp<br>
+++ b/modules/demux/mkv/matroska_<u></u>segment.cpp<br>
@@ -139,7 +139,7 @@ void matroska_segment_c::LoadCues( KaxCues *cues )<br>
                      KaxCueTime &ctime = *(KaxCueTime*)el;<br>
                      try<br>
                      {<br>
-                        if( unlikely( ctime.GetSize() >= SIZE_MAX ) )<br>
+                        if( unlikely( ctime.IsFiniteSize() &&<br>
ctime.GetSize() >= SIZE_MAX ) )<br>
                          {<br>
                              msg_Err( &sys.demuxer, "CueTime size too<br>
big");<br>
                              b_invalid_cue = true;<br>
@@ -162,7 +162,7 @@ void matroska_segment_c::LoadCues( KaxCues *cues )<br>
                      {<br>
                          while( ( el = ep->Get() ) != NULL )<br>
                          {<br>
-                            if( unlikely( el->GetSize() >= SIZE_MAX ) )<br>
+                            if( unlikely( el->IsFiniteSize() &&<br>
el->GetSize() >= SIZE_MAX ) )<br>
                              {<br>
                                  ep->Up();<br>
                                  msg_Err( &sys.demuxer, "Error %s too<br>
big, aborting", typeid(*el).name() );<br>
@@ -296,7 +296,7 @@ SimpleTag * matroska_segment_c::<u></u>ParseSimpleTags(<br>
KaxTagSimple *tag, int target_t<br>
      {<br>
          while( ( el = ep->Get() ) != NULL && size < max_size)<br>
          {<br>
-            if( unlikely( el->GetSize() >= SIZE_MAX ) )<br>
+            if( unlikely( el->IsFiniteSize() && el->GetSize() >=<br>
SIZE_MAX ) )<br>
              {<br>
                  msg_Err( &sys.demuxer, "Error %s too big ignoring the<br>
tag", typeid(*el).name() );<br>
                  delete ep;<br>
@@ -409,7 +409,7 @@ void matroska_segment_c::LoadTags( KaxTags *tags )<br>
                      {<br>
                          try<br>
                          {<br>
-                            if( unlikely( el->GetSize() >= SIZE_MAX ) )<br>
+                            if( unlikely( el->IsFiniteSize() &&<br>
el->GetSize() >= SIZE_MAX ) )<br>
                              {<br>
                                  msg_Err( &sys.demuxer, "Invalid size<br>
while reading tag");<br>
                                  break;<br>
@@ -1351,7 +1351,7 @@ int matroska_segment_c::BlockGet( KaxBlock * &<br>
pp_block, KaxSimpleBlock * & pp_s<br>
                      }<br>
                      break;<br>
                  case 2:<br>
-                    if( unlikely( el->GetSize() >= SIZE_MAX ) )<br>
+                    if( unlikely( el->IsFiniteSize() && el->GetSize()<br>
 >= SIZE_MAX ) )<br>
                      {<br>
                          msg_Err( &sys.demuxer, "Error while reading<br>
%s... upping level", typeid(*el).name());<br>
                          ep->Up();<br>
@@ -1388,7 +1388,7 @@ int matroska_segment_c::BlockGet( KaxBlock * &<br>
pp_block, KaxSimpleBlock * & pp_s<br>
                      }<br>
                      break;<br>
                  case 3:<br>
-                    if( unlikely( el->GetSize() >= SIZE_MAX ) )<br>
+                    if( unlikely( el->IsFiniteSize() && el->GetSize()<br>
 >= SIZE_MAX ) )<br>
                      {<br>
                          msg_Err( &sys.demuxer, "Error while reading<br>
%s... upping level", typeid(*el).name());<br>
                          ep->Up();<br>
diff --git a/modules/demux/mkv/matroska_<u></u>segment_parse.cpp<br>
b/modules/demux/mkv/matroska_<u></u>segment_parse.cpp<br>
index 751c824..fc80103 100644<br>
--- a/modules/demux/mkv/matroska_<u></u>segment_parse.cpp<br>
+++ b/modules/demux/mkv/matroska_<u></u>segment_parse.cpp<br>
@@ -93,7 +93,7 @@ void matroska_segment_c::<u></u>ParseSeekHead( KaxSeekHead<br>
*seekhead )<br>
              {<br>
                  while( ( l = ep->Get() ) != NULL )<br>
                  {<br>
-                    if( unlikely( l->GetSize() >= SIZE_MAX ) )<br>
+                    if( unlikely( l->IsFiniteSize() && l->GetSize() >=<br>
SIZE_MAX ) )<br>
                      {<br>
                          msg_Err( &sys.demuxer,"%s too big... skipping<br>
it",  typeid(*l).name() );<br>
                          continue;<br>
@@ -745,7 +745,7 @@ void matroska_segment_c::<u></u>ParseTracks( KaxTracks<br>
*tracks )<br>
      int i_upper_level = 0;<br>
<br>
      /* Master elements */<br>
-    if( unlikely( tracks->GetSize() >= SIZE_MAX ) )<br>
+    if( unlikely( tracks->IsFiniteSize() && tracks->GetSize() >=<br>
SIZE_MAX ) )<br>
      {<br>
          msg_Err( &sys.demuxer, "Track too big, aborting" );<br>
          return;<br>
@@ -786,7 +786,7 @@ void matroska_segment_c::ParseInfo( KaxInfo *info )<br>
<br>
      /* Master elements */<br>
      m = static_cast<EbmlMaster *>(info);<br>
-    if( unlikely( m->GetSize() >= SIZE_MAX ) )<br>
+    if( unlikely( m->IsFiniteSize() && m->GetSize() >= SIZE_MAX ) )<br>
      {<br>
          msg_Err( &sys.demuxer, "Info too big, aborting" );<br>
          return;<br>
@@ -914,7 +914,7 @@ void matroska_segment_c::ParseInfo( KaxInfo *info )<br>
              KaxChapterTranslate *p_trans =<br>
static_cast<<u></u>KaxChapterTranslate*>( l );<br>
              try<br>
              {<br>
-                if( unlikely( p_trans->GetSize() >= SIZE_MAX ) )<br>
+                if( unlikely( p_trans->IsFiniteSize() &&<br>
p_trans->GetSize() >= SIZE_MAX ) )<br>
                  {<br>
                      msg_Err( &sys.demuxer, "Chapter translate too big,<br>
aborting" );<br>
                      continue;<br>
@@ -1108,7 +1108,7 @@ void matroska_segment_c::<u></u>ParseAttachments(<br>
KaxAttachments *attachments )<br>
      EbmlElement *el;<br>
      int i_upper_level = 0;<br>
<br>
-    if( unlikely( attachments->GetSize() >= SIZE_MAX ) )<br>
+    if( unlikely( attachments->IsFiniteSize() && attachments->GetSize()<br>
 >= SIZE_MAX ) )<br>
      {<br>
          msg_Err( &sys.demuxer, "Attachments too big, aborting" );<br>
          return;<br>
@@ -1171,7 +1171,7 @@ void matroska_segment_c::<u></u>ParseChapters(<br>
KaxChapters *chapters )<br>
      int i_upper_level = 0;<br>
<br>
      /* Master elements */<br>
-    if( unlikely( chapters->GetSize() >= SIZE_MAX ) )<br>
+    if( unlikely( chapters->IsFiniteSize() && chapters->GetSize() >=<br>
SIZE_MAX ) )<br>
      {<br>
          msg_Err( &sys.demuxer, "Chapters too big, aborting" );<br>
          return;<br>
@@ -1245,7 +1245,7 @@ void matroska_segment_c::<u></u>ParseCluster( KaxCluster<br>
*cluster, bool b_update_start_<br>
<br>
      /* Master elements */<br>
      m = static_cast<EbmlMaster *>( cluster );<br>
-    if( unlikely( m->GetSize() >= SIZE_MAX ) )<br>
+    if( unlikely( m->IsFiniteSize() && m->GetSize() >= SIZE_MAX ) )<br>
      {<br>
          msg_Err( &sys.demuxer, "Cluster too big, aborting" );<br>
          return;<br>
</blockquote>
<br>
<br>
-- <br></div></div><span class="HOEnZb"><font color="#888888">
Jean-Baptiste Kempf<br>
<a href="http://www.jbkempf.com/" target="_blank">http://www.jbkempf.com/</a> - <a href="tel:%2B33%20672%20704%20734" value="+33672704734" target="_blank">+33 672 704 734</a><br>
Sent from my Electronic Device<br>
______________________________<u></u>_________________<br>
vlc-devel mailing list<br>
To unsubscribe or modify your subscription options:<br>
<a href="https://mailman.videolan.org/listinfo/vlc-devel" target="_blank">https://mailman.videolan.org/<u></u>listinfo/vlc-devel</a><br>
</font></span></blockquote></div><br></div>