Avoid out of bound write.
Avoid using pointer (shared) after free.

Signed-off-by: Jean-Christophe DUBOIS <j...@tribudubois.net>
---
 systems/fbdev/fbdev.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/systems/fbdev/fbdev.c b/systems/fbdev/fbdev.c
index aee785b..6d17d46 100644
--- a/systems/fbdev/fbdev.c
+++ b/systems/fbdev/fbdev.c
@@ -356,7 +356,7 @@ dfb_fbdev_get_pci_info( FBDevShared *shared )
 
      snprintf(path, SYSFS_PATH_MAX, SYS_CLASS_GRAPHICS_DEV, devname);
 
-     len = readlink(path,buf,512);
+     len = readlink(path,buf,sizeof(buf)-1);
      if(len != -1) {
           char * base;
           buf[len] = '\0';
@@ -629,12 +629,12 @@ error:
           if (shared->current_cmap_memory)
                SHFREE( pool_data, shared->current_cmap_memory );
 
+          if (dfb_fbdev->framebuffer_base)
+               munmap( dfb_fbdev->framebuffer_base, shared->fix.smem_len );
+
           SHFREE( pool, shared );
      }
 
-     if (dfb_fbdev->framebuffer_base)
-          munmap( dfb_fbdev->framebuffer_base, shared->fix.smem_len );
-
      if (dfb_fbdev->fd != -1)
           close( dfb_fbdev->fd );
 
-- 
1.9.1

_______________________________________________
directfb-dev mailing list
directfb-dev@directfb.org
http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev

Reply via email to