From: Bartosz Kosiorek gang65@poczta.onet.pl
--- dlls/msvcrt/dir.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/msvcrt/dir.c b/dlls/msvcrt/dir.c index 91aaaf5ff18..2c2c25b0e9d 100644 --- a/dlls/msvcrt/dir.c +++ b/dlls/msvcrt/dir.c @@ -790,19 +790,23 @@ char* CDECL _getcwd(char * buf, int size) int dir_len = GetCurrentDirectoryA(MAX_PATH,dir);
if (dir_len < 1) - return NULL; /* FIXME: Real return value untested */ + return NULL;
if (!buf) { if (size <= dir_len) size = dir_len + 1; - if (!(buf = malloc( size ))) return NULL; + if (!(buf = malloc( size ))) + { + *_errno() = ENOMEM; + return NULL; + } } else if (dir_len >= size) { *_errno() = ERANGE; return NULL; /* buf too small */ } - strcpy(buf,dir); + strcpy_s(buf, size, dir); return buf; }