From f216b446aa83b1b123df6e2aeb88a489dcc14f50 Mon Sep 17 00:00:00 2001 From: Philipp Wiesemann Date: Sat, 5 Aug 2017 22:10:36 +0200 Subject: [PATCH] kmsdrm: Fixed crashes if allocating memory failed. --- src/video/kmsdrm/SDL_kmsdrmopengles.c | 3 +++ src/video/kmsdrm/SDL_kmsdrmvideo.c | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/src/video/kmsdrm/SDL_kmsdrmopengles.c b/src/video/kmsdrm/SDL_kmsdrmopengles.c index 8da196308..4937eb565 100644 --- a/src/video/kmsdrm/SDL_kmsdrmopengles.c +++ b/src/video/kmsdrm/SDL_kmsdrmopengles.c @@ -102,6 +102,9 @@ KMSDRM_GLES_SwapWindow(_THIS, SDL_Window * window) { } fb_info = KMSDRM_FBFromBO(_this, wdata->next_bo); + if (fb_info == NULL) { + return 0; + } if (_this->egl_data->egl_swapinterval == 0) { /* Swap buffers instantly, possible tearing */ /* SDL_LogDebug(SDL_LOG_CATEGORY_VIDEO, "drmModeSetCrtc(%d, %u, %u, 0, 0, &%u, 1, &%ux%u@%u)", diff --git a/src/video/kmsdrm/SDL_kmsdrmvideo.c b/src/video/kmsdrm/SDL_kmsdrmvideo.c index 76b6d55dd..ac75ec371 100644 --- a/src/video/kmsdrm/SDL_kmsdrmvideo.c +++ b/src/video/kmsdrm/SDL_kmsdrmvideo.c @@ -199,6 +199,10 @@ KMSDRM_FBFromBO(_THIS, struct gbm_bo *bo) /* Here a new DRM FB must be created */ fb_info = (KMSDRM_FBInfo *)SDL_calloc(1, sizeof(KMSDRM_FBInfo)); + if (fb_info == NULL) { + SDL_OutOfMemory(); + return NULL; + } fb_info->drm_fd = vdata->drm_fd; w = KMSDRM_gbm_bo_get_width(bo); @@ -280,6 +284,10 @@ KMSDRM_VideoInit(_THIS) /* Open /dev/dri/cardNN */ devname = (char *) SDL_calloc(1, 16); + if (devname == NULL) { + ret = SDL_OutOfMemory(); + goto cleanup; + } SDL_snprintf(devname, 16, "/dev/dri/card%d", vdata->devindex); vdata->drm_fd = open(devname, O_RDWR | O_CLOEXEC); SDL_free(devname);