diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2016-08-03 21:17:11 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2016-08-16 14:22:07 +0900 |
commit | 31ddb457bfe55171e657ec04d57defdf7d460370 (patch) | |
tree | 21595bf21304c6823f5ae885dbb5f4532afba8f5 | |
parent | 2cb131e1ccdb6536ef3516b49ab90775688db3f3 (diff) | |
download | ruby-openssl-31ddb457bfe55171e657ec04d57defdf7d460370.tar.gz |
x509req: fix memory leaks in #set_attributes and #add_attribute
X509_REQ_add1_attr() dups the X509_ATTRIBUTE given as the argument, so
we don't need to duplicate beforehand.
-rw-r--r-- | ext/openssl/ossl_x509.h | 2 | ||||
-rw-r--r-- | ext/openssl/ossl_x509attr.c | 9 | ||||
-rw-r--r-- | ext/openssl/ossl_x509req.c | 4 |
3 files changed, 6 insertions, 9 deletions
diff --git a/ext/openssl/ossl_x509.h b/ext/openssl/ossl_x509.h index 57680485..72cf73f4 100644 --- a/ext/openssl/ossl_x509.h +++ b/ext/openssl/ossl_x509.h @@ -31,7 +31,7 @@ extern VALUE cX509Attr; extern VALUE eX509AttrError; VALUE ossl_x509attr_new(X509_ATTRIBUTE *); -X509_ATTRIBUTE *DupX509AttrPtr(VALUE); +X509_ATTRIBUTE *GetX509AttrPtr(VALUE); void Init_ossl_x509attr(void); /* diff --git a/ext/openssl/ossl_x509attr.c b/ext/openssl/ossl_x509attr.c index 67b00b14..ae0b347b 100644 --- a/ext/openssl/ossl_x509attr.c +++ b/ext/openssl/ossl_x509attr.c @@ -72,16 +72,13 @@ ossl_x509attr_new(X509_ATTRIBUTE *attr) } X509_ATTRIBUTE * -DupX509AttrPtr(VALUE obj) +GetX509AttrPtr(VALUE obj) { - X509_ATTRIBUTE *attr, *new; + X509_ATTRIBUTE *attr; SafeGetX509Attr(obj, attr); - if (!(new = X509_ATTRIBUTE_dup(attr))) { - ossl_raise(eX509AttrError, NULL); - } - return new; + return attr; } /* diff --git a/ext/openssl/ossl_x509req.c b/ext/openssl/ossl_x509req.c index 7a277597..11cff733 100644 --- a/ext/openssl/ossl_x509req.c +++ b/ext/openssl/ossl_x509req.c @@ -432,7 +432,7 @@ ossl_x509req_set_attributes(VALUE self, VALUE ary) X509_ATTRIBUTE_free(attr); for (i=0;i<RARRAY_LEN(ary); i++) { item = RARRAY_AREF(ary, i); - attr = DupX509AttrPtr(item); + attr = GetX509AttrPtr(item); if (!X509_REQ_add1_attr(req, attr)) { ossl_raise(eX509ReqError, NULL); } @@ -446,7 +446,7 @@ ossl_x509req_add_attribute(VALUE self, VALUE attr) X509_REQ *req; GetX509Req(self, req); - if (!X509_REQ_add1_attr(req, DupX509AttrPtr(attr))) { + if (!X509_REQ_add1_attr(req, GetX509AttrPtr(attr))) { ossl_raise(eX509ReqError, NULL); } |