summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStanislav Malyshev <stas@php.net>2014-11-30 18:32:56 -0800
committerStanislav Malyshev <stas@php.net>2014-11-30 18:32:56 -0800
commitc64949626dd21ec571f48a54d187da4c9ad312b7 (patch)
treeec3fef90ff28ffc233af65bd2e8aff92d7aa1232
parent25e3e78016572cf86e4dff7bb0179f639abd5603 (diff)
parentde65eaa8c8faf6ae256aef3a2a074255b249a6f0 (diff)
downloadphp-git-c64949626dd21ec571f48a54d187da4c9ad312b7.tar.gz
Merge branch 'PHP-5.6'
* PHP-5.6: Adds test cases for openssl EC improvements Adds better handling of EC keys: OPENSSL_KEYTYPE_EC Fixes memory leak introduced in 2b9af967 Conflicts: ext/openssl/openssl.c
-rw-r--r--ext/date/php_date.c1
-rwxr-xr-xext/openssl/openssl.c57
2 files changed, 28 insertions, 30 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index 6146dec927..28a43e6678 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -3641,6 +3641,7 @@ static int timezone_initialize(php_timezone_obj *tzobj, /*const*/ char *tz TSRML
return FAILURE;
} else {
set_timezone_from_timelib_time(tzobj, dummy_t);
+ free(dummy_t->tz_abbr);
efree(dummy_t);
return SUCCESS;
}
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index 147a9ec919..60d36ff743 100755
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -3879,42 +3879,39 @@ PHP_FUNCTION(openssl_pkey_get_details)
#ifdef HAVE_EVP_PKEY_EC
case EVP_PKEY_EC:
ktype = OPENSSL_KEYTYPE_EC;
- if (pkey->pkey.ec == NULL) {
- break;
- }
-
- zval ec;
- const EC_GROUP *ec_group;
- int nid;
- char *crv_sn;
- ASN1_OBJECT *obj;
- // openssl recommends a buffer length of 80
- char oir_buf[80];
+ if (pkey->pkey.ec != NULL) {
+ zval ec;
+ const EC_GROUP *ec_group;
+ int nid;
+ char *crv_sn;
+ ASN1_OBJECT *obj;
+ // openssl recommends a buffer length of 80
+ char oir_buf[80];
- ec_group = EC_KEY_get0_group(EVP_PKEY_get1_EC_KEY(pkey));
+ ec_group = EC_KEY_get0_group(EVP_PKEY_get1_EC_KEY(pkey));
- // Curve nid (numerical identifier) used for ASN1 mapping
- nid = EC_GROUP_get_curve_name(ec_group);
- if (nid == NID_undef) {
- break;
- }
+ // Curve nid (numerical identifier) used for ASN1 mapping
+ nid = EC_GROUP_get_curve_name(ec_group);
+ if (nid == NID_undef) {
+ break;
+ }
+ array_init(&ec);
- array_init(&ec);
+ // Short object name
+ crv_sn = (char*) OBJ_nid2sn(nid);
+ if (crv_sn != NULL) {
+ add_assoc_string(&ec, "curve_name", crv_sn);
+ }
- // Short object name
- crv_sn = (char*) OBJ_nid2sn(nid);
- if (crv_sn != NULL) {
- add_assoc_string(&ec, "curve_name", crv_sn);
- }
+ obj = OBJ_nid2obj(nid);
+ if (obj != NULL) {
+ int oir_len = OBJ_obj2txt(oir_buf, sizeof(oir_buf), obj, 1);
+ add_assoc_stringl(&ec, "curve_oid", (char*)oir_buf, oir_len);
+ ASN1_OBJECT_free(obj);
+ }
- obj = OBJ_nid2obj(nid);
- if (obj != NULL) {
- int oir_len = OBJ_obj2txt(oir_buf, sizeof(oir_buf), obj, 1);
- add_assoc_stringl(&ec, "curve_oid", (char*)oir_buf, oir_len);
- ASN1_OBJECT_free(obj);
+ add_assoc_zval(return_value, "ec", &ec);
}
-
- add_assoc_zval(return_value, "ec", &ec);
break;
#endif
default: