summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/curl/curl.c5
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);