summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Zelenka <bukka@php.net>2016-08-03 20:01:41 +0100
committerJakub Zelenka <bukka@php.net>2017-04-26 14:59:15 +0100
commitc0203c0cebcb22b892a6923ca7afc086c96c391c (patch)
tree2824517bedd19fc12c39d5ae29cacbf668a8b345
parentf639b64dca0a72bd7cbb8f773d8934036a175e20 (diff)
downloadphp-git-c0203c0cebcb22b892a6923ca7afc086c96c391c.tar.gz
Do not add already added object to the internal OpenSSL table
This fixes OpenSSL 1.1 where adding object with OID that has been already added causes an error - preventing of duplication.
-rw-r--r--ext/openssl/openssl.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
index f490677931..1242a80fdb 100644
--- a/ext/openssl/openssl.c
+++ b/ext/openssl/openssl.c
@@ -1007,7 +1007,8 @@ static int add_oid_section(struct php_x509_request * req) /* {{{ */
}
for (i = 0; i < sk_CONF_VALUE_num(sktmp); i++) {
cnf = sk_CONF_VALUE_value(sktmp, i);
- if (OBJ_create(cnf->value, cnf->name, cnf->name) == NID_undef) {
+ if (OBJ_sn2nid(cnf->name) == NID_undef && OBJ_ln2nid(cnf->name) == NID_undef &&
+ OBJ_create(cnf->value, cnf->name, cnf->name) == NID_undef) {
php_error_docref(NULL, E_WARNING, "problem creating object %s=%s", cnf->name, cnf->value);
return FAILURE;
}