Pārlūkot izejas kodu

Fixed bug 3723 - Possible double free in kmsdrm init code on certain errors

Simon Hug

KMSDRM_VideoInit allocates and frees some connectors and encoders but doesn't set the pointer to NULL after freeing. The cleanup code at the end may free one of those garbage pointer should an error happen in the initialization.
Sam Lantinga 8 gadi atpakaļ
vecāks
revīzija
a05522a089
1 mainītis faili ar 2 papildinājumiem un 0 dzēšanām
  1. 2 0
      src/video/kmsdrm/SDL_kmsdrmvideo.c

+ 2 - 0
src/video/kmsdrm/SDL_kmsdrmvideo.c

@@ -325,6 +325,7 @@ KMSDRM_VideoInit(_THIS)
         }
         }
 
 
         KMSDRM_drmModeFreeConnector(connector);
         KMSDRM_drmModeFreeConnector(connector);
+        connector = NULL;
     }
     }
 
 
     if (i == resources->count_connectors) {
     if (i == resources->count_connectors) {
@@ -345,6 +346,7 @@ KMSDRM_VideoInit(_THIS)
         }
         }
 
 
         KMSDRM_drmModeFreeEncoder(encoder);
         KMSDRM_drmModeFreeEncoder(encoder);
+        encoder = NULL;
     }
     }
 
 
     if (i == resources->count_encoders) {
     if (i == resources->count_encoders) {