diff options
author | Lubomir I. Ivanov <neolit123@gmail.com> | 2014-01-07 16:41:19 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-01-08 05:52:10 +0800 |
commit | 3c794d0275235bc631435285aa6da20c639ffeaa (patch) | |
tree | 6f2857956fc804454ed75fe366ec01e3870027c3 /windows.c | |
parent | 409c2e9bcfd8a3f328e21b511919cc70629cc1ab (diff) | |
download | subsurface-3c794d0275235bc631435285aa6da20c639ffeaa.tar.gz |
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 <neolit123@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'windows.c')
-rw-r--r-- | windows.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -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); |