From 6dbfd4287bfb4de8bc7446f3c09ccce4e75368b6 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Fri, 29 Jul 2016 13:33:58 +0200 Subject: [PATCH] move error check to right place this only makes sense when length was passed --- win32/ioutil.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/win32/ioutil.h b/win32/ioutil.h index d2e8239075..2a02d52c51 100644 --- a/win32/ioutil.h +++ b/win32/ioutil.h @@ -437,16 +437,17 @@ __forceinline static char *php_win32_ioutil_getcwd(char *buf, int len) free(tmp_bufa); SET_ERRNO_FROM_WIN32_CODE(ERROR_BAD_LENGTH); return NULL; - } else if (tmp_bufa_len + 1 > len) { - free(tmp_bufa); - SET_ERRNO_FROM_WIN32_CODE(ERROR_INSUFFICIENT_BUFFER); - return NULL; } if (!buf) { /* If buf was NULL, the result has to be freed outside here. */ buf = tmp_bufa; } else { + if (tmp_bufa_len + 1 > len) { + free(tmp_bufa); + SET_ERRNO_FROM_WIN32_CODE(ERROR_INSUFFICIENT_BUFFER); + return NULL; + } memmove(buf, tmp_bufa, tmp_bufa_len + 1); free(tmp_bufa); } -- 2.50.1