]> git.sesse.net Git - vlc/commitdiff
fb: do not segfault when OpenDisplay() fails in Create().
authorJean-Paul Saman <jean-paul.saman@m2x.nl>
Wed, 11 Feb 2009 16:05:32 +0000 (17:05 +0100)
committerJean-Paul Saman <jean-paul.saman@m2x.nl>
Tue, 17 Feb 2009 11:40:14 +0000 (12:40 +0100)
When the plugin fails to open the framebuffer, then the mmap might
not have been done yet. In this case a segmentation fault will occur
when memset is called on p_sys->p_video. (p_sys->p_video is either NULL,
or MMAP_FAILED.)

modules/video_output/fb.c

index 8aa5050dbac2a3a0fa6dc558780ba0f4a6da7a97..78dac63400d992dbb4964836f9bbf1172782c2da 100644 (file)
@@ -941,9 +941,13 @@ static int OpenDisplay( vout_thread_t *p_vout )
  *****************************************************************************/
 static void CloseDisplay( vout_thread_t *p_vout )
 {
-    /* Clear display */
-    memset( p_vout->p_sys->p_video, 0, p_vout->p_sys->i_page_size );
-    munmap( p_vout->p_sys->p_video, p_vout->p_sys->i_page_size );
+    if( p_vout->p_sys->p_video != NULL &&
+        p_vout->p_sys->p_video != MAP_FAILED )
+    {
+        /* Clear display */
+        memset( p_vout->p_sys->p_video, 0, p_vout->p_sys->i_page_size );
+        munmap( p_vout->p_sys->p_video, p_vout->p_sys->i_page_size );
+    }
 
     if( p_vout->p_sys->i_fd >= 0 )
     {