[MacRuby-devel] [MacRuby] #811: Bus error encrypting/decrypting with OpenSSL
MacRuby
ruby-noreply at macosforge.org
Mon Jul 26 16:04:14 PDT 2010
#811: Bus error encrypting/decrypting with OpenSSL
-------------------------------+--------------------------------------------
Reporter: pwilson@… | Owner: lsansonetti@…
Type: defect | Status: closed
Priority: blocker | Milestone: MacRuby 0.7
Component: MacRuby | Resolution: fixed
Keywords: |
-------------------------------+--------------------------------------------
Changes (by martinlagardette@…):
* status: new => closed
* resolution: => fixed
Old description:
> I've verified that Trac 809 fixes an OpenSSL bug I ran into, but I'm
> running into additional failures later in the process of doing
> encryption/decryption operations. I'm attaching a test file that first
> encrypts some data with an RSA key and then decrypts it.
>
> On encryption, the script bus errors with this stack trace:
>
> {{{
> Program received signal EXC_BAD_ACCESS, Could not access memory.
> Reason: KERN_PROTECTION_FAILURE at address: 0x0000000100972cd8
> 0x00007fff84444289 in BN_bn2bin ()
> (gdb) bt
> #0 0x00007fff84444289 in BN_bn2bin ()
> #1 0x00007fff844b0634 in RSA_eay_public_encrypt ()
> #2 0x00007fff844c4c6b in RSA_public_encrypt ()
> #3 0x0000000103d1ad79 in ossl_rsa_public_encrypt ()
> #4 0x00000001001408e9 in rb_vm_dispatch ()
> #5 0x0000000103a00d50 in ?? ()
> #6 0x0000000103a03d1c in ?? ()
> #7 0x0000000100140805 in rb_vm_dispatch ()
> #8 0x0000000103a00d50 in ?? ()
> #9 0x0000000103a00346 in ?? ()
> #10 0x000000010014d5b8 in rb_vm_run ()
> #11 0x0000000100040530 in ruby_run_node ()
> #12 0x0000000100000d28 in main ()
> }}}
>
> If I encrypt the data using Ruby 1.9.2, save it to a file, and then use
> MacRuby to decrypt it, I get this stack trace:
>
> {{{
> Program received signal EXC_BAD_ACCESS, Could not access memory.
> Reason: KERN_PROTECTION_FAILURE at address: 0x0000000100972cd8
> 0x00007fffffe007c5 in __memcpy ()
> (gdb) bt
> #0 0x00007fffffe007c5 in __memcpy ()
> #1 0x00007fff8449e138 in RSA_padding_check_PKCS1_type_2 ()
> #2 0x00007fff844b127e in RSA_eay_private_decrypt ()
> #3 0x00007fff844c4c8b in RSA_private_decrypt ()
> #4 0x0000000103c1a8a8 in ossl_rsa_private_decrypt ()
> #5 0x00000001001408e9 in rb_vm_dispatch ()
> #6 0x0000000103a00be0 in ?? ()
> #7 0x0000000103a0aa8d in ?? ()
> #8 0x000000010014082b in rb_vm_dispatch ()
> #9 0x0000000103a00be0 in ?? ()
> #10 0x0000000103a0a344 in ?? ()
> #11 0x0000000100140846 in rb_vm_dispatch ()
> #12 0x0000000103a00be0 in ?? ()
> #13 0x0000000103a0023e in ?? ()
> #14 0x000000010014d5b8 in rb_vm_run ()
> #15 0x0000000100040530 in ruby_run_node ()
> #16 0x0000000100000d28 in main ()
> }}}
>
> Looking at the source code, I assume it is pretty much the same issue as
> fixed in Trac 809 (revision 4373) for the Cipher code. Ie...
>
> {{{
> - str = rb_str_new(0, out_len);
> + str = rb_bstr_new();
> + rb_bstr_resize(str, out_len);
> }}}
New description:
I've verified that Trac #809 fixes an OpenSSL bug I ran into, but I'm
running into additional failures later in the process of doing
encryption/decryption operations. I'm attaching a test file that first
encrypts some data with an RSA key and then decrypts it.
On encryption, the script bus errors with this stack trace:
{{{
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x0000000100972cd8
0x00007fff84444289 in BN_bn2bin ()
(gdb) bt
#0 0x00007fff84444289 in BN_bn2bin ()
#1 0x00007fff844b0634 in RSA_eay_public_encrypt ()
#2 0x00007fff844c4c6b in RSA_public_encrypt ()
#3 0x0000000103d1ad79 in ossl_rsa_public_encrypt ()
#4 0x00000001001408e9 in rb_vm_dispatch ()
#5 0x0000000103a00d50 in ?? ()
#6 0x0000000103a03d1c in ?? ()
#7 0x0000000100140805 in rb_vm_dispatch ()
#8 0x0000000103a00d50 in ?? ()
#9 0x0000000103a00346 in ?? ()
#10 0x000000010014d5b8 in rb_vm_run ()
#11 0x0000000100040530 in ruby_run_node ()
#12 0x0000000100000d28 in main ()
}}}
If I encrypt the data using Ruby 1.9.2, save it to a file, and then use
MacRuby to decrypt it, I get this stack trace:
{{{
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_PROTECTION_FAILURE at address: 0x0000000100972cd8
0x00007fffffe007c5 in __memcpy ()
(gdb) bt
#0 0x00007fffffe007c5 in __memcpy ()
#1 0x00007fff8449e138 in RSA_padding_check_PKCS1_type_2 ()
#2 0x00007fff844b127e in RSA_eay_private_decrypt ()
#3 0x00007fff844c4c8b in RSA_private_decrypt ()
#4 0x0000000103c1a8a8 in ossl_rsa_private_decrypt ()
#5 0x00000001001408e9 in rb_vm_dispatch ()
#6 0x0000000103a00be0 in ?? ()
#7 0x0000000103a0aa8d in ?? ()
#8 0x000000010014082b in rb_vm_dispatch ()
#9 0x0000000103a00be0 in ?? ()
#10 0x0000000103a0a344 in ?? ()
#11 0x0000000100140846 in rb_vm_dispatch ()
#12 0x0000000103a00be0 in ?? ()
#13 0x0000000103a0023e in ?? ()
#14 0x000000010014d5b8 in rb_vm_run ()
#15 0x0000000100040530 in ruby_run_node ()
#16 0x0000000100000d28 in main ()
}}}
Looking at the source code, I assume it is pretty much the same issue as
fixed in Trac #809 (r4373) for the Cipher code. Ie...
{{{
#!diff
- str = rb_str_new(0, out_len);
+ str = rb_bstr_new();
+ rb_bstr_resize(str, out_len);
}}}
--
Comment:
Should be fixed with r4384 :
{{{
$> macruby /tmp/failure.rb
The quick brown fox jumped over the lazy fox.
$>
}}}
--
Ticket URL: <http://www.macruby.org/trac/ticket/811#comment:1>
MacRuby <http://macruby.org/>
More information about the MacRuby-devel
mailing list