<div dir="ltr">On Sun, Mar 31, 2013 at 4:12 PM, Igor Sysoev <span dir="ltr"><<a href="mailto:igor@sysoev.ru" target="_blank">igor@sysoev.ru</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">On Mar 31, 2013, at 14:33 , Justin Cormack wrote:<br>
<br>
> There is a note in src/os/unix/ngx_user.c about a bug in glibc for crypt_r:<br>
><br>
>     /* work around the glibc bug */<br>
>     cd.current_salt[0] = ~salt[0];<br>
><br>
>     value = crypt_r((char *) key, (char *) salt, &cd);<br>
><br>
> I was wondering if anyone knew what the bug was, as I am running on a platform (Musl libc) that has got NGX_HAVE_GNU_CRYPT_R but has a different implementation, in particular has no current_salt field in struct crypt_data (and indeed the man page says you should treat it as opaque except for the initialized field).<br>

><br>
> I was wondering exactly what the bug was as then I could write a test for it rather than always including this code; I have not been able to find it in the glibc bug tracker though.<br>
<br>
<br>
</div></div>2002-10-29  Daniel Jacobowitz  <<a href="mailto:drow@mvista.com">drow@mvista.com</a>><br>
<br>
        * crypt/crypt_util.c (__init_des_r): Initialize current_salt<br>
        and current_saltbits.<br>
<br>
<a href="https://groups.google.com/forum/?fromgroups=#!topic/linux.debian.maint.glibc/Q88bwAp222w" target="_blank">https://groups.google.com/forum/?fromgroups=#!topic/linux.debian.maint.glibc/Q88bwAp222w</a><br>
<br></blockquote><div><br></div><div style>Ok I just checked and this bug was fixed in glibc-2.3.2, which was released in March 2003... Any chance of removing the workaround as it is relying on fields that may not exist and are implementation internal?</div>
<div style><br></div><div style>Justin</div><div style><br></div></div></div></div>