diff options
-rw-r--r-- | ext/curl/curl.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/curl/curl.c b/ext/curl/curl.c index ff9c0bc2c7..3575445b11 100644 --- a/ext/curl/curl.c +++ b/ext/curl/curl.c @@ -348,6 +348,7 @@ PHP_FUNCTION(curl_exec) FILE *fp; char buf[4096]; int b; + unsigned long pos = 0; CURLLS_FETCH(); @@ -408,8 +409,10 @@ PHP_FUNCTION(curl_exec) ret_data = emalloc((stat_sb.st_size+1)*sizeof(char)); while ((b = fread(buf, 1, sizeof(buf), fp)) > 0) { - strcat(ret_data, buf); + memcpy(&(ret_data[pos]), buf, b); + pos += b; } + ret_data[stat_sb.st_size - 1] = '\0'; RETURN_STRINGL(ret_data, stat_sb.st_size, 0); |