[vlc-devel] commit: nuv: Fix some warnings and fix an issue where some unitialized pointer access could lead to a crash . (Pierre d'Herbemont )

git version control git at videolan.org
Fri Aug 21 01:36:15 CEST 2009


vlc | branch: master | Pierre d'Herbemont <pdherbemont at free.fr> | Fri Aug 21 01:21:17 2009 +0200| [3bbe374b28aa3452cc2da64becb3445cf1d20833] | committer: Pierre d'Herbemont 

nuv: Fix some warnings and fix an issue where some unitialized pointer access could lead to a crash.

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

 modules/demux/nuv.c |   18 +++++++++++++-----
 1 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/modules/demux/nuv.c b/modules/demux/nuv.c
index 99cad83..a56c872 100644
--- a/modules/demux/nuv.c
+++ b/modules/demux/nuv.c
@@ -461,7 +461,10 @@ static int Control( demux_t *p_demux, int i_query, va_list args )
             {
                 i64 = stream_Size( p_demux->s );
                 if( i64 > 0 )
-                    *pf = (double)stream_Tell( p_demux->s ) / (double)i64;
+                {
+                    double current = stream_Tell( p_demux->s );
+                    *pf = current / (double)i64;
+                }
                 else
                     *pf = 0.0;
             }
@@ -723,8 +726,8 @@ static int SeekTableLoad( demux_t *p_demux, demux_sys_t *p_sys )
 {
     frame_header_t fh;
     int64_t i_original_pos;
-    uint8_t* p_seek_table;
-    uint8_t* p_kfa_table;
+    uint8_t* p_seek_table = NULL;
+    uint8_t* p_kfa_table = NULL;
     int32_t i_seek_elements = 0, i_kfa_elements = 0, j;
     int64_t i_time, i_offset;
     int keyframe, last_keyframe = 0, frame = 0, kfa_entry_id = 0;
@@ -804,12 +807,17 @@ static int SeekTableLoad( demux_t *p_demux, demux_sys_t *p_sys )
         }
     }
 
-
     if( i_kfa_elements > 0 )
         msg_Warn( p_demux, "untested keyframe adjust support, upload samples" );
 
-    for(j=0; j < i_seek_elements; j++)
+    for(j = 0; j < i_seek_elements; j++)
     {
+        if( !p_seek_table || !p_kfa_table)
+        {
+            free(p_seek_table);
+            free(p_kfa_table);
+            return VLC_EGENERIC;
+        }
 #if 0
         uint8_t* p = p_seek_table + j * 12;
         msg_Dbg( p_demux, "%x %x %x %x %x %x %x %x %x %x %x %x",




More information about the vlc-devel mailing list