From 304f5e8569fb7786d50bd529da09ba866edd3b1c Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Tue, 7 Jan 2014 16:41:19 +0200 Subject: windows.c: Fix possible assert when passing NULL to *open() On Win32 subsurface_fopen() can reach an assert in windows.c: utf8_to_utf16(), if NULL is passed for 'path'. Let's return NULL/-1 for some of the *open() functions in there. Signed-off-by: Lubomir I. Ivanov Signed-off-by: Dirk Hohndel --- windows.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'windows.c') diff --git a/windows.c b/windows.c index 9288af45f..7c537f6e5 100644 --- a/windows.c +++ b/windows.c @@ -114,6 +114,8 @@ static wchar_t *utf8_to_utf16_fl(const char *utf8, char *file, int line) int subsurface_open(const char *path, int oflags, mode_t mode) { int ret = -1; + if (!path) + return -1; wchar_t *wpath = utf8_to_utf16(path); if (wpath) { ret = _wopen(wpath, oflags, mode); @@ -126,6 +128,8 @@ int subsurface_open(const char *path, int oflags, mode_t mode) FILE *subsurface_fopen(const char *path, const char *mode) { FILE *ret = NULL; + if (!path) + return ret; wchar_t *wpath = utf8_to_utf16(path); if (wpath) { const int len = strlen(mode); @@ -144,6 +148,8 @@ FILE *subsurface_fopen(const char *path, const char *mode) void *subsurface_opendir(const char *path) { _WDIR *ret = NULL; + if (!path) + return ret; wchar_t *wpath = utf8_to_utf16(path); if (wpath) { ret = _wopendir(wpath); -- cgit v1.2.3-70-g09d2