vlc | branch: master | Alexandre Janniaux <[email protected]> | Fri Apr 16 
20:26:40 2021 +0200| [540437b0537b5eae85b4fc4bc6455097ea21b6b2] | committer: 
Alexandre Janniaux

kms: fix use-after-free on device string

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=540437b0537b5eae85b4fc4bc6455097ea21b6b2
---

 modules/video_output/kms.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/modules/video_output/kms.c b/modules/video_output/kms.c
index 9965f3a8ef..d1b6dbc7d6 100644
--- a/modules/video_output/kms.c
+++ b/modules/video_output/kms.c
@@ -525,12 +525,14 @@ static int OpenDisplay(vout_display_t *vd)
         free(psz_device);
         return VLC_EGENERIC;
     }
-    free(psz_device);
 
     drmSetClientCap(sys->drm_fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1);
 
     if (!ChromaNegotiation(vd))
+    {
+        free(psz_device);
         goto err_out;
+    }
 
     msg_Dbg(vd, "Using VLC chroma '%.4s', DRM chroma '%.4s'",
             (char*)&sys->vlc_fourcc, (char*)&sys->drm_fourcc);
@@ -538,8 +540,10 @@ static int OpenDisplay(vout_display_t *vd)
     ret = drmGetCap(sys->drm_fd, DRM_CAP_DUMB_BUFFER, &dumbRet);
     if (ret < 0 || !dumbRet) {
         msg_Err(vd, "Device '%s' does not support dumb buffers", psz_device);
+        free(psz_device);
         goto err_out;
     }
+    free(psz_device);
 
     modeRes = drmModeGetResources(sys->drm_fd);
     if (modeRes == NULL) {

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to