I am in the process of adding openssl support to my application, and I came across a bug that appears to only happen in the win64a + masm environment. Specifically, microsoft's linker can add a 32bit pointer to OPENSSL_cpuid_setup to the .CRT$XCU section instead of a 64bit pointer. However, at runtime it is interpreted as a very high pointer. If the incorrectly interpreted pointer happens to reference memory inaccessible to your application, a crash occurs in _initterm().
The fix (sorry for bad formatting...): openssl-1.0.0d\crypto\perlasm\x86_64-xlate.pl line 558 - $v.=" READONLY DWORD"; + $v.=" READONLY 'DATA'"; Please let me know how I can follow the progress to make sure it gets committed :) -Shawn Hoffman
|
I am in the process of adding openssl support to my application, and
I came across a bug that appears to only happen in the win64a + masm
environment. Specifically, microsoft's linker can add a 32bit pointer to OPENSSL_cpuid_setup to the .CRT$XCU section instead of a 64bit pointer. However, at runtime it is interpreted as a very high pointer. If the incorrectly interpreted pointer happens to reference memory inaccessible to your application, a crash occurs in _initterm(). The fix (sorry for bad formatting...): openssl-1.0.0d\crypto\perlasm\x86_64-xlate.pl line 558 - $v.=" READONLY DWORD"; + $v.=" READONLY 'DATA'"; Please let me know how I can follow the progress to make sure it gets committed :) -Shawn Hoffman |
