From: Anatol Belski Date: Fri, 29 Jul 2016 11:33:58 +0000 (+0200) Subject: move error check to right place X-Git-Tag: php-7.1.0beta2~31 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6dbfd4287bfb4de8bc7446f3c09ccce4e75368b6;p=php move error check to right place this only makes sense when length was passed --- 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); }