mirror of
https://github.com/php/php-src.git
synced 2025-01-25 05:04:20 +08:00
fix segfault/leak, add test
This commit is contained in:
parent
2229e563e4
commit
c3890b0044
@ -773,7 +773,7 @@ static X509 * php_openssl_x509_from_zval(zval ** val, int makeresource, long * r
|
||||
}
|
||||
|
||||
/* force it to be a string and check if it refers to a file */
|
||||
convert_to_string_ex(val);
|
||||
convert_to_string(*val);
|
||||
|
||||
if (Z_STRLEN_PP(val) > 7 && memcmp(Z_STRVAL_PP(val), "file://", sizeof("file://") - 1) == 0) {
|
||||
/* read cert from the named file */
|
||||
|
57
ext/openssl/tests/003.phpt
Normal file
57
ext/openssl/tests/003.phpt
Normal file
@ -0,0 +1,57 @@
|
||||
--TEST--
|
||||
openssl_pkcs7_decrypt() and invalid parameters
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("openssl")) print "skip"; ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
function myErrorHandler($errno, $errstr, $errfile, $errline) {
|
||||
var_dump($errstr);
|
||||
}
|
||||
set_error_handler("myErrorHandler");
|
||||
|
||||
$a = 1;
|
||||
$b = 1;
|
||||
$c = new stdclass;
|
||||
$d = new stdclass;
|
||||
|
||||
var_dump(openssl_pkcs7_decrypt($a, $b, $c, $d));
|
||||
var_dump($c);
|
||||
|
||||
var_dump(openssl_pkcs7_decrypt($b, $b, $b, $b));
|
||||
var_dump(openssl_pkcs7_decrypt($a, $b, "", ""));
|
||||
var_dump(openssl_pkcs7_decrypt($a, $b, true, false));
|
||||
var_dump(openssl_pkcs7_decrypt($a, $b, 0, 0));
|
||||
|
||||
echo "Done\n";
|
||||
?>
|
||||
--EXPECTF--
|
||||
string(57) "Object of class stdClass could not be converted to string"
|
||||
string(45) "Object of class stdClass to string conversion"
|
||||
string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
|
||||
bool(false)
|
||||
string(6) "Object"
|
||||
string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
|
||||
bool(false)
|
||||
string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
|
||||
bool(false)
|
||||
string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
|
||||
bool(false)
|
||||
string(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
|
||||
bool(false)
|
||||
Done
|
||||
--UEXPECTF--
|
||||
unicode(64) "Object of class stdClass could not be converted to binary string"
|
||||
unicode(45) "Object of class stdClass to string conversion"
|
||||
unicode(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
|
||||
bool(false)
|
||||
string(6) "Object"
|
||||
unicode(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
|
||||
bool(false)
|
||||
unicode(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
|
||||
bool(false)
|
||||
unicode(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
|
||||
bool(false)
|
||||
unicode(66) "openssl_pkcs7_decrypt(): unable to coerce parameter 3 to x509 cert"
|
||||
bool(false)
|
||||
Done
|
Loading…
Reference in New Issue
Block a user