diff options
author | Antony Dovgal <tony2001@php.net> | 2006-08-30 21:51:08 +0000 |
---|---|---|
committer | Antony Dovgal <tony2001@php.net> | 2006-08-30 21:51:08 +0000 |
commit | 1dd6ee3f6de30aa839ea5d6f8bc51e021a07cfc6 (patch) | |
tree | 5031b3b25324daef40606ab3f2d70ff37b25aea2 | |
parent | 1f138e7e017bd765ab0b6c3841453e656b52f1a5 (diff) | |
download | php-git-1dd6ee3f6de30aa839ea5d6f8bc51e021a07cfc6.tar.gz |
fix segfault/leak, add test
-rw-r--r-- | ext/openssl/openssl.c | 2 | ||||
-rw-r--r-- | ext/openssl/tests/003.phpt | 42 |
2 files changed, 43 insertions, 1 deletions
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index dc22923814..4bcdeac4df 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -807,7 +807,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 */ diff --git a/ext/openssl/tests/003.phpt b/ext/openssl/tests/003.phpt new file mode 100644 index 0000000000..6c129f8cea --- /dev/null +++ b/ext/openssl/tests/003.phpt @@ -0,0 +1,42 @@ +--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 |