dri_glx: fix use after free report
authorBrian Paul <brianp@vmware.com>
Mon, 11 Feb 2013 18:57:34 +0000 (11:57 -0700)
committerAndreas Boll <andreas.boll.dev@gmail.com>
Wed, 13 Feb 2013 17:46:40 +0000 (18:46 +0100)
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@amd.com>
Signed-off-by: Dave Airlie <airlied@redhat.com>
(cherry picked from commit a0ec9185eb90568ab57170dc682de0ba0c9e5e62)

Conflicts:

src/glx/dri_glx.c

src/glx/dri_glx.c

index 9bfcb0c..510e94b 100644 (file)
@@ -865,7 +865,6 @@ driCreateScreen(int screen, struct glx_display *priv)
    }
 
    psc->driver = driOpenDriver(driverName);
-   Xfree(driverName);
    if (psc->driver == NULL)
       goto cleanup;
 
@@ -913,11 +912,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);