From c3890b0044ef6ce9f856882b8da3b4359fb7f212 Mon Sep 17 00:00:00 2001 From: Antony Dovgal Date: Wed, 30 Aug 2006 21:50:29 +0000 Subject: [PATCH] fix segfault/leak, add test --- ext/openssl/openssl.c | 2 +- ext/openssl/tests/003.phpt | 57 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 ext/openssl/tests/003.phpt diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c index be4534b5e51..94cb71027a6 100644 --- a/ext/openssl/openssl.c +++ b/ext/openssl/openssl.c @@ -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 */ diff --git a/ext/openssl/tests/003.phpt b/ext/openssl/tests/003.phpt new file mode 100644 index 00000000000..dbc958e3f9d --- /dev/null +++ b/ext/openssl/tests/003.phpt @@ -0,0 +1,57 @@ +--TEST-- +openssl_pkcs7_decrypt() and invalid parameters +--SKIPIF-- + +--FILE-- + +--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