diff options
author | Dave Airlie <[email protected]> | 2012-11-30 17:47:47 +1000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2012-12-01 11:20:36 +1000 |
commit | a0ec9185eb90568ab57170dc682de0ba0c9e5e62 (patch) | |
tree | f92b4ccfb88615cb8300246087baf5b3642fefca /src/glx/dri_glx.c | |
parent | a47a0200a78ed8bddcf0c79b4b630e475e7357ca (diff) |
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 <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/glx/dri_glx.c')
-rw-r--r-- | 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 de777fbba8b..f42db79ad61 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); |