From 6a10d81cea5ab739871d73e776102624512b0d34 Mon Sep 17 00:00:00 2001 From: Andreas Schiffler Date: Tue, 2 Apr 2013 08:38:52 -0700 Subject: [PATCH] Add input validation and null checking to SDL_Get/SetWindowData [reported by Joseph T.] --- src/video/SDL_video.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c index 53da52693..1e40ec2cf 100644 --- a/src/video/SDL_video.c +++ b/src/video/SDL_video.c @@ -1425,11 +1425,17 @@ SDL_SetWindowData(SDL_Window * window, const char *name, void *userdata) SDL_WindowUserData *prev, *data; CHECK_WINDOW_MAGIC(window, NULL); + + /* Input validation */ + if (name == NULL || SDL_strlen(name) == 0) { + SDL_InvalidParamError("name"); + return NULL; + } /* See if the named data already exists */ prev = NULL; for (data = window->data; data; prev = data, data = data->next) { - if (SDL_strcmp(data->name, name) == 0) { + if (data->name && SDL_strcmp(data->name, name) == 0) { void *last_value = data->data; if (userdata) { @@ -1467,8 +1473,14 @@ SDL_GetWindowData(SDL_Window * window, const char *name) CHECK_WINDOW_MAGIC(window, NULL); + /* Input validation */ + if (name == NULL || SDL_strlen(name) == 0) { + SDL_InvalidParamError("name"); + return NULL; + } + for (data = window->data; data; data = data->next) { - if (SDL_strcmp(data->name, name) == 0) { + if (data->name && SDL_strcmp(data->name, name) == 0) { return data->data; } }