diff options
author | Stanislav Malyshev <stas@php.net> | 2014-11-30 18:32:56 -0800 |
---|---|---|
committer | Stanislav Malyshev <stas@php.net> | 2014-11-30 18:32:56 -0800 |
commit | c64949626dd21ec571f48a54d187da4c9ad312b7 (patch) | |
tree | ec3fef90ff28ffc233af65bd2e8aff92d7aa1232 | |
parent | 25e3e78016572cf86e4dff7bb0179f639abd5603 (diff) | |
parent | de65eaa8c8faf6ae256aef3a2a074255b249a6f0 (diff) | |
download | php-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.c | 1 | ||||
-rwxr-xr-x | ext/openssl/openssl.c | 57 |
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: |