make crypt return an unmatchable hash rather than NULL on failure
authorRich Felker <dalias@aerifal.cx>
Fri, 10 Aug 2012 00:47:17 +0000 (20:47 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 10 Aug 2012 00:47:17 +0000 (20:47 -0400)
commitb3c4cc121f70faea45389fe7ddc1127ed5cbd8bb
tree3bebd913d79b7acac599853a2e82c0831421ae77
parentae0b9da48c91087c5ab78e4918deb69665d0ccc6
make crypt return an unmatchable hash rather than NULL on failure

unfortunately, a large portion of programs which call crypt are not
prepared for its failure and do not check that the return value is
non-null before using it. thus, always "succeeding" but giving an
unmatchable hash is reportedly a better behavior than failing on
error.

it was suggested that we could do this the same way as other
implementations and put the null-to-unmatchable translation in the
wrapper rather than the individual crypt modules like crypt_des, but
when i tried to do it, i found it was making the logic in __crypt_r
for keeping track of which hash type we're working with and whether it
succeeded or failed much more complex, and potentially error-prone.
the way i'm doing it now seems to have essentially zero cost, anyway.
src/misc/crypt_des.c