[vlc-commits] demux/asf: prevent overflow leading to crash (fixes #17580)

Filip Roséen git at videolan.org
Tue Nov 1 22:17:19 CET 2016


vlc | branch: master | Filip Roséen <filip at atch.se> | Tue Nov  1 02:15:25 2016 +0100| [c06adddc9aa345d14daab576c7e61cf14b7a8dfc] | committer: Rémi Denis-Courmont

demux/asf: prevent overflow leading to crash (fixes #17580)

Given that the previous implementation assigned the return-value of
vlc_stream_Peek to a size_t, the value would wrap around on error
(since vlc_stream_Peek returns -1), rendering the "< 78" somewhat
useless (when an error occurs).

These changes change the type of i_peek to correspond to that of
vlc_stream_Peek, while also making sure that we error before calling
the function if the object size is larger than SSIZE_MAX (meaning that
we cannot peek).

Signed-off-by: Rémi Denis-Courmont <remi at remlab.net>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=c06adddc9aa345d14daab576c7e61cf14b7a8dfc
---

 modules/demux/asf/libasf.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/modules/demux/asf/libasf.c b/modules/demux/asf/libasf.c
index ed782bd..c5213ce 100644
--- a/modules/demux/asf/libasf.c
+++ b/modules/demux/asf/libasf.c
@@ -25,6 +25,8 @@
 # include "config.h"
 #endif
 
+#include <limits.h>
+
 #include <vlc_demux.h>
 #include <vlc_charset.h>          /* FromCharset */
 
@@ -528,9 +530,17 @@ static void ASF_FreeObject_header_extension( asf_object_t *p_obj )
 static int ASF_ReadObject_stream_properties( stream_t *s, asf_object_t *p_obj )
 {
     asf_object_stream_properties_t *p_sp = &p_obj->stream_properties;
-    size_t        i_peek;
+    ssize_t i_peek;
     const uint8_t *p_peek;
 
+#if UINT64_MAX > SSIZE_MAX
+    if( p_sp->i_object_size > SSIZE_MAX )
+    {
+        msg_Err( s, "unable to peek: object size is too large" );
+        return VLC_EGENERIC;
+    }
+#endif
+
     if( ( i_peek = vlc_stream_Peek( s, &p_peek,  p_sp->i_object_size ) ) < 78 )
        return VLC_EGENERIC;
 



More information about the vlc-commits mailing list