• Tom Lane's avatar
    Apply upstream fix for blowfish signed-character bug (CVE-2011-2483). · ca59dfa6
    Tom Lane authored
    A password containing a character with the high bit set was misprocessed
    on machines where char is signed (which is most).  This could cause the
    preceding one to three characters to fail to affect the hashed result,
    thus weakening the password.  The result was also unportable, and failed
    to match some other blowfish implementations such as OpenBSD's.
    
    Since the fix changes the output for such passwords, upstream chose
    to provide a compatibility hack: password salts beginning with $2x$
    (instead of the usual $2a$ for blowfish) are intentionally processed
    "wrong" to give the same hash as before.  Stored password hashes can
    thus be modified if necessary to still match, though it'd be better
    to change any affected passwords.
    
    In passing, sync a couple other upstream changes that marginally improve
    performance and/or tighten error checking.
    
    Back-patch to all supported branches.  Since this issue is already
    public, no reason not to commit the fix ASAP.
    ca59dfa6
crypt-blowfish.c 23.5 KB