mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
curl: Don't truncate length
Truncating to an int seems dangerous, esp. in combination with a MIN macro. I don't see a reason to truncate the length from size_t to int, and especially no reason to change the signedness. Closes GH-20747.
This commit is contained in:
1
NEWS
1
NEWS
@@ -15,6 +15,7 @@ PHP NEWS
|
||||
- Curl:
|
||||
. Fixed bug GH-21023 (CURLOPT_XFERINFOFUNCTION crash with a null callback).
|
||||
(David Carlier)
|
||||
. Don't truncate length. (ndossche)
|
||||
|
||||
- Date:
|
||||
. Fixed bug GH-20936 (DatePeriod::__set_state() cannot handle null start).
|
||||
|
||||
@@ -583,7 +583,7 @@ static size_t curl_write(char *data, size_t size, size_t nmemb, void *ctx)
|
||||
return fwrite(data, size, nmemb, write_handler->fp);
|
||||
case PHP_CURL_RETURN:
|
||||
if (length > 0) {
|
||||
smart_str_appendl(&write_handler->buf, data, (int) length);
|
||||
smart_str_appendl(&write_handler->buf, data, length);
|
||||
}
|
||||
break;
|
||||
case PHP_CURL_USER: {
|
||||
@@ -860,7 +860,7 @@ static size_t curl_read(char *data, size_t size, size_t nmemb, void *ctx)
|
||||
if (!Z_ISUNDEF(retval)) {
|
||||
_php_curl_verify_handlers(ch, /* reporterror */ true);
|
||||
if (Z_TYPE(retval) == IS_STRING) {
|
||||
length = MIN((size * nmemb), Z_STRLEN(retval));
|
||||
length = MIN(size * nmemb, Z_STRLEN(retval));
|
||||
memcpy(data, Z_STRVAL(retval), length);
|
||||
} else if (Z_TYPE(retval) == IS_LONG) {
|
||||
length = Z_LVAL_P(&retval);
|
||||
@@ -891,7 +891,7 @@ static size_t curl_write_header(char *data, size_t size, size_t nmemb, void *ctx
|
||||
/* Handle special case write when we're returning the entire transfer
|
||||
*/
|
||||
if (ch->handlers.write->method == PHP_CURL_RETURN && length > 0) {
|
||||
smart_str_appendl(&ch->handlers.write->buf, data, (int) length);
|
||||
smart_str_appendl(&ch->handlers.write->buf, data, length);
|
||||
} else {
|
||||
PHPWRITE(data, length);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user