Follow @Openwall on Twitter for new release announcements and other news
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Date: Thu, 26 May 2011 12:16:46 -0500
From: "jfoug" <>
To: <>
Subject: RE: SSE bug still there in Jumbo-5-RC6++

>-----Original Message-----
>From: magnum Sent: Thursday, May 26, 2011 5:38 AM
>Please try the attached rawMD5unicode_fmt.c

This patched file fixed all of the issues I had.  However, it had one of
it's own.

Failed on sparc-64.  Simple fix. Had to mem_alloc_tiny within the binary()
function.  After that change, I think the random memory overwrite problems
we were seeing have been nipped in the bud.  This would only show up on
alignment required builds, using non MMX build (such as the sparc).  Why
this does not crash the sparc 32 bit, I do not know.  Possibly some compiler
flag that aligns 4 byte.  

>It solves ALL problems for me on x86-64, x86-sse2 and x86-mmx and the
>OpenLDAPS can be enabled again. Everything passes self tests and test
>suite. It also speed things up as I dropped saved_plain completely and
>rebuild it from the key buffer instead.
>However, I must also revert the following hunk in Jim's latest SSE2
>patch in order to get NSLDAP going:

I have also put the 36*MMXCOEF back in, but the buffer is now proper size.
This will allow 'exact' 32 byte passwords to be found.  We actually could go
UP to 35 bytes, but I do not know the format, and do not know if 32 byte is
the max.

Back to the sparc-32 vs sparc-64 problems seen (sorry, switching gears to
something a little off this topic).  I wonder if doing this:    

if (!(*((unsigned int *) binary) - *((unsigned int *) &MD5_out[i])))  

is bad, and should be changed to:

if (!(*((ARCH_WORD_32 *) binary) - *(( ARCH_WORD_32 *) &MD5_out[i])))  

Could the other code be doing 64 bit compares (on some 64 bit builds)?  This
would be bad if we were setting data (double data copying, and last copy
could blow over end of buffer).  But if we have BINARY_SIZE set at 4, which
is how Solar's wants to start using for mem reasons, then could the
"unsigned int*" types could be accessing off limits memory, correct?


Powered by blists - more mailing lists

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.