summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-10-15 10:16:56 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-10-15 10:16:56 +0200
commitfb246bec142b19ec0329c964bd73b32566343661 (patch)
tree5ce59814decf02fd603a63bda732408bc914efa7 /ext
parent6c6a58e930c5863ab1bd11f6a19cbf22aa2f20d4 (diff)
parenta29016d70d72dacb688b4df334508edb550d688f (diff)
downloadphp-git-fb246bec142b19ec0329c964bd73b32566343661.tar.gz
Merge branch 'PHP-7.3' into PHP-7.4
* PHP-7.3: Fix leak in gmp_export()
Diffstat (limited to 'ext')
-rw-r--r--ext/gmp/gmp.c4
-rw-r--r--ext/gmp/tests/gmp_export.phpt4
2 files changed, 6 insertions, 2 deletions
diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c
index c2ac6d0a1e..865f26ea9f 100644
--- a/ext/gmp/gmp.c
+++ b/ext/gmp/gmp.c
@@ -1136,7 +1136,7 @@ ZEND_FUNCTION(gmp_export)
FETCH_GMP_ZVAL(gmpnumber, gmpnumber_arg, temp_a);
if (mpz_sgn(gmpnumber) == 0) {
- RETURN_EMPTY_STRING();
+ RETVAL_EMPTY_STRING();
} else {
size_t bits_per_word = size * 8;
size_t count = (mpz_sizeinbase(gmpnumber, 2) + bits_per_word - 1) / bits_per_word;
@@ -1145,7 +1145,7 @@ ZEND_FUNCTION(gmp_export)
mpz_export(ZSTR_VAL(out_string), NULL, order, size, endian, 0, gmpnumber);
ZSTR_VAL(out_string)[ZSTR_LEN(out_string)] = '\0';
- RETURN_NEW_STR(out_string);
+ RETVAL_NEW_STR(out_string);
}
FREE_GMP_TEMP(temp_a);
diff --git a/ext/gmp/tests/gmp_export.phpt b/ext/gmp/tests/gmp_export.phpt
index 52449ecf0a..e2acab7f37 100644
--- a/ext/gmp/tests/gmp_export.phpt
+++ b/ext/gmp/tests/gmp_export.phpt
@@ -50,6 +50,9 @@ foreach ($export as $k => $test) {
var_dump($passed);
+// Argument converted from int to GMP
+var_dump(bin2hex(gmp_export(0xff)));
+
// Invalid arguments (zpp failure)
var_dump(gmp_export());
@@ -62,6 +65,7 @@ var_dump(gmp_export(123, 1, GMP_MSW_FIRST | GMP_LSW_FIRST));
var_dump(gmp_export(123, 1, GMP_BIG_ENDIAN | GMP_LITTLE_ENDIAN));
--EXPECTF--
bool(true)
+string(2) "ff"
Warning: gmp_export() expects at least 1 parameter, 0 given in %s on line %d
NULL