aboutsummaryrefslogtreecommitdiffstats
path: root/ossl_x509req.c
diff options
context:
space:
mode:
authorMichal Rokos <m.rokos@sh.cvut.cz>2001-12-21 20:10:12 +0000
committerMichal Rokos <m.rokos@sh.cvut.cz>2001-12-21 20:10:12 +0000
commit91d3b685dcd805ced1453c551ad315eb3173eab1 (patch)
treec0ed09824800e654855d9224b9b9d398523b3f44 /ossl_x509req.c
parentb248d91eda8ce439e8d3565438c5ca9bc7c07e9d (diff)
downloadruby-openssl-history-91d3b685dcd805ced1453c551ad315eb3173eab1.tar.gz
* Memory checking
Diffstat (limited to 'ossl_x509req.c')
-rw-r--r--ossl_x509req.c60
1 files changed, 44 insertions, 16 deletions
diff --git a/ossl_x509req.c b/ossl_x509req.c
index 55d1e83..6f8c2fa 100644
--- a/ossl_x509req.c
+++ b/ossl_x509req.c
@@ -47,30 +47,49 @@ ossl_x509req_free(ossl_x509req *reqp)
* Public functions
*/
VALUE
-ossl_x509req_new2(X509_REQ *req)
+ossl_x509req_new_null(void)
{
ossl_x509req *reqp = NULL;
VALUE self;
MakeX509Req(self, reqp);
- if (!(reqp->request = X509_REQ_dup(req))) {
+
+ if (!(reqp->request = X509_REQ_new()))
+ rb_raise(eX509RequestError, "%s", ossl_error());
+
+ return self;
+}
+
+VALUE
+ossl_x509req_new(X509_REQ *req)
+{
+ ossl_x509req *reqp = NULL;
+ VALUE self;
+
+ if (!req)
+ return ossl_x509req_new_null();
+
+ MakeX509Req(self, reqp);
+
+ if (!(reqp->request = X509_REQ_dup(req)))
rb_raise(eX509RequestError, "%s", ossl_error());
- }
return self;
}
X509_REQ *
-ossl_x509req_get_X509_REQ(VALUE self)
+ossl_x509req_get_X509_REQ(VALUE obj)
{
ossl_x509req *reqp = NULL;
X509_REQ *req = NULL;
- GetX509Req(self, reqp);
+ OSSL_Check_Type(obj, cX509Request);
- if (!(req = X509_REQ_dup(reqp->request))) {
+ GetX509Req(obj, reqp);
+
+ if (!(req = X509_REQ_dup(reqp->request)))
rb_raise(eX509RequestError, "%s", ossl_error());
- }
+
return req;
}
@@ -84,6 +103,7 @@ ossl_x509req_s_new(int argc, VALUE *argv, VALUE klass)
VALUE obj;
MakeX509Req(obj, reqp);
+
rb_obj_call_init(obj, argc, argv);
return obj;
@@ -115,9 +135,9 @@ ossl_x509req_initialize(int argc, VALUE *argv, VALUE self)
default:
rb_raise(rb_eTypeError, "unsupported type");
}
- if (!req) {
+ if (!req)
rb_raise(eX509RequestError, "%s", ossl_error());
- }
+
reqp->request = req;
return self;
@@ -186,7 +206,7 @@ ossl_x509req_to_x509(VALUE self, VALUE days, VALUE key)
rb_raise(eX509RequestError, "%s", ossl_error());
}
- return ossl_x509req_new2(x509);
+ return ossl_x509req_new(x509);
}
*/
@@ -233,7 +253,7 @@ ossl_x509req_get_subject(VALUE self)
if (!(name = X509_REQ_get_subject_name(reqp->request))) {
rb_raise(eX509RequestError, "%s", ossl_error());
}
- subject = ossl_x509name_new2(name);
+ subject = ossl_x509name_new(name);
/*X509_NAME_free(name);*/
return subject;
@@ -253,6 +273,7 @@ ossl_x509req_set_subject(VALUE self, VALUE subject)
if (!X509_REQ_set_subject_name(reqp->request, name)) {
rb_raise(eX509RequestError, "%s", ossl_error());
}
+ /*X509_NAME_free(name);*/
return subject;
}
@@ -339,9 +360,10 @@ ossl_x509req_verify(VALUE self, VALUE key)
i = X509_REQ_verify(reqp->request, pkey);
EVP_PKEY_free(pkey);
- if (i < 0) {
+ if (i < 0)
rb_raise(eX509RequestError, "%s", ossl_error());
- } else if (i > 0)
+
+ if (i > 0)
return Qtrue;
return Qfalse;
@@ -359,12 +381,14 @@ ossl_x509req_get_attributes(VALUE self)
count = X509_REQ_get_attr_count(reqp->request);
- if(count > 0) ary = rb_ary_new2(count);
- else return rb_ary_new();
+ if(count > 0)
+ ary = rb_ary_new2(count);
+ else
+ return rb_ary_new();
for (i=0; i<count; i++) {
attr = X509_REQ_get_attr(reqp->request, i);
- rb_ary_push(ary, ossl_x509attr_new2(attr));
+ rb_ary_push(ary, ossl_x509attr_new(attr));
}
return ary;
@@ -387,8 +411,11 @@ ossl_x509req_set_attributes(VALUE self, VALUE ary)
for (i=0;i<RARRAY(ary)->len; i++) {
item = RARRAY(ary)->ptr[i];
+
OSSL_Check_Type(item, cX509Attribute);
+
attr = ossl_x509attr_get_X509_ATTRIBUTE(item);
+
if (!X509_REQ_add1_attr(reqp->request, attr)) {
rb_raise(eX509RequestError, "%s", ossl_error());
}
@@ -407,6 +434,7 @@ ossl_x509req_add_attribute(VALUE self, VALUE attr)
GetX509Req(self, reqp);
OSSL_Check_Type(attr, cX509Attribute);
+
if (!X509_REQ_add1_attr(reqp->request, ossl_x509attr_get_X509_ATTRIBUTE(attr))) {
rb_raise(eX509RequestError, "%s", ossl_error());
}