summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2006-08-30 21:51:08 +0000
committerAntony Dovgal <tony2001@php.net>2006-08-30 21:51:08 +0000
commit1dd6ee3f6de30aa839ea5d6f8bc51e021a07cfc6 (patch)
tree5031b3b25324daef40606ab3f2d70ff37b25aea2
parent1f138e7e017bd765ab0b6c3841453e656b52f1a5 (diff)
downloadphp-git-1dd6ee3f6de30aa839ea5d6f8bc51e021a07cfc6.tar.gz
fix segfault/leak, add test
-rw-r--r--ext/openssl/openssl.c2
-rw-r--r--ext/openssl/tests/003.phpt42
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