Mesa (master): dri_glx: fix use after free report

Dave Airlie airlied at kemper.freedesktop.org
Sat Dec 1 01:27:44 UTC 2012


Module: Mesa
Branch: master
Commit: a0ec9185eb90568ab57170dc682de0ba0c9e5e62
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=a0ec9185eb90568ab57170dc682de0ba0c9e5e62

Author: Dave Airlie <airlied at gmail.com>
Date:   Fri Nov 30 17:47:47 2012 +1000

dri_glx: fix use after free report

the critical error would use driverName.

Found by internal RH coverity scan.

Note: This is a candidate for stable branches.

Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 src/glx/dri_glx.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/src/glx/dri_glx.c b/src/glx/dri_glx.c
index de777fb..f42db79 100644
--- a/src/glx/dri_glx.c
+++ b/src/glx/dri_glx.c
@@ -805,7 +805,6 @@ driCreateScreen(int screen, struct glx_display *priv)
    }
 
    psc->driver = driOpenDriver(driverName);
-   free(driverName);
    if (psc->driver == NULL)
       goto cleanup;
 
@@ -847,11 +846,15 @@ driCreateScreen(int screen, struct glx_display *priv)
    psp->setSwapInterval = driSetSwapInterval;
    psp->getSwapInterval = driGetSwapInterval;
 
+   free(driverName);
+
    return &psc->base;
 
 cleanup:
    CriticalErrorMessageF("failed to load driver: %s\n", driverName);
 
+   free(driverName);
+
    if (psc->driver)
       dlclose(psc->driver);
    glx_screen_cleanup(&psc->base);




More information about the mesa-commit mailing list