[macruby-changes] [5085] MacRuby/trunk/ext/openssl/ossl_x509attr.c

source_changes at macosforge.org source_changes at macosforge.org
Mon Dec 27 15:38:04 PST 2010


Revision: 5085
          http://trac.macosforge.org/projects/ruby/changeset/5085
Author:   watson1978 at gmail.com
Date:     2010-12-27 15:37:59 -0800 (Mon, 27 Dec 2010)
Log Message:
-----------
Fixed the Bus Error within OpenSSL::X509::Attribute#to_der.

Test Script:
{{{
require 'openssl'

def create_ext_req(exts)
  ef = OpenSSL::X509::ExtensionFactory.new
  exts = exts.collect{|e| ef.create_extension(*e) }
  return OpenSSL::ASN1::Set([OpenSSL::ASN1::Sequence(exts)])
end

exts = [
        ["keyUsage", "Digital Signature, Key Encipherment", true],
        ["subjectAltName", "email:watson1978 at gmail.com", false],
       ]

attrval = create_ext_req(exts)
p OpenSSL::X509::Attribute.new("extReq", attrval).to_der
}}}

Modified Paths:
--------------
    MacRuby/trunk/ext/openssl/ossl_x509attr.c

Modified: MacRuby/trunk/ext/openssl/ossl_x509attr.c
===================================================================
--- MacRuby/trunk/ext/openssl/ossl_x509attr.c	2010-12-27 19:39:58 UTC (rev 5084)
+++ MacRuby/trunk/ext/openssl/ossl_x509attr.c	2010-12-27 23:37:59 UTC (rev 5085)
@@ -248,11 +248,12 @@
     GetX509Attr(self, attr);
     if((len = i2d_X509_ATTRIBUTE(attr, NULL)) <= 0)
 	ossl_raise(eX509AttrError, NULL);
-    str = rb_str_new(0, len);
-    p = (unsigned char *)RSTRING_PTR(str);
+    str = rb_bstr_new();
+    rb_bstr_resize(str, len);
+    p = (unsigned char *)rb_bstr_bytes(str);
     if(i2d_X509_ATTRIBUTE(attr, &p) <= 0)
 	ossl_raise(eX509AttrError, NULL);
-    rb_str_set_len(str, p - (unsigned char*)RSTRING_PTR(str)); 
+    rb_bstr_resize(str, p - (unsigned char*)rb_bstr_bytes(str));
 
     return str;
 }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20101227/92ebc19c/attachment.html>


More information about the macruby-changes mailing list