1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

Merge branch 'PHP-8.5'

* PHP-8.5:
  zip: Don't truncate return value of zip_fread() with user sizes
This commit is contained in:
Niels Dossche
2025-11-18 20:32:15 +01:00

View File

@@ -1303,7 +1303,6 @@ PHP_FUNCTION(zip_entry_read)
zend_long len = 0; zend_long len = 0;
zip_read_rsrc * zr_rsrc; zip_read_rsrc * zr_rsrc;
zend_string *buffer; zend_string *buffer;
int n = 0;
if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &zip_entry, &len) == FAILURE) { if (zend_parse_parameters(ZEND_NUM_ARGS(), "r|l", &zip_entry, &len) == FAILURE) {
RETURN_THROWS(); RETURN_THROWS();
@@ -1319,7 +1318,7 @@ PHP_FUNCTION(zip_entry_read)
if (zr_rsrc->zf) { if (zr_rsrc->zf) {
buffer = zend_string_safe_alloc(1, len, 0, false); buffer = zend_string_safe_alloc(1, len, 0, false);
n = zip_fread(zr_rsrc->zf, ZSTR_VAL(buffer), ZSTR_LEN(buffer)); zip_int64_t n = zip_fread(zr_rsrc->zf, ZSTR_VAL(buffer), ZSTR_LEN(buffer));
if (n > 0) { if (n > 0) {
ZSTR_VAL(buffer)[n] = '\0'; ZSTR_VAL(buffer)[n] = '\0';
ZSTR_LEN(buffer) = n; ZSTR_LEN(buffer) = n;
@@ -2781,8 +2780,6 @@ static void php_zip_get_from(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */
zend_string *filename; zend_string *filename;
zend_string *buffer; zend_string *buffer;
int n = 0;
if (type == 1) { if (type == 1) {
if (zend_parse_parameters(ZEND_NUM_ARGS(), "P|ll", &filename, &len, &flags) == FAILURE) { if (zend_parse_parameters(ZEND_NUM_ARGS(), "P|ll", &filename, &len, &flags) == FAILURE) {
RETURN_THROWS(); RETURN_THROWS();
@@ -2819,7 +2816,7 @@ static void php_zip_get_from(INTERNAL_FUNCTION_PARAMETERS, int type) /* {{{ */
} }
buffer = zend_string_safe_alloc(1, len, 0, false); buffer = zend_string_safe_alloc(1, len, 0, false);
n = zip_fread(zf, ZSTR_VAL(buffer), ZSTR_LEN(buffer)); zip_int64_t n = zip_fread(zf, ZSTR_VAL(buffer), ZSTR_LEN(buffer));
if (n < 1) { if (n < 1) {
zend_string_efree(buffer); zend_string_efree(buffer);
RETURN_EMPTY_STRING(); RETURN_EMPTY_STRING();