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

Reply via email to