]> granicus.if.org Git - php/commitdiff
move error check to right place
authorAnatol Belski <ab@php.net>
Fri, 29 Jul 2016 11:33:58 +0000 (13:33 +0200)
committerAnatol Belski <ab@php.net>
Fri, 29 Jul 2016 11:33:58 +0000 (13:33 +0200)
this only makes sense when length was passed

win32/ioutil.h

index d2e823907593e1bf7185abfe1eeca1b935da88d3..2a02d52c51f7140a790ffa41c43f0357532fa5bf 100644 (file)
@@ -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);
        }