Hi Kev,

Thanks, I added this to devel branch.

The other issue with the threads should go away.  I'm planning to
remove the threads from sesman because it does a bunch for forking.

Jay



On Sun, Oct 26, 2014 at 1:48 PM, Ken Milmore <ken.milm...@gmail.com> wrote:
> Hello,
>
> I am using xrdp without PAM, and have been looking at the recently
> modified shadow authentication code in sesman/verify_user.c.
>
> I have noticed that sesman segfaults when attempting to authenticate a
> user account which has been locked by "passwd -l username".  In fact the
> segfault occurs whenever the contents of the shadow password field do
> not match any of the hash formats expected by GNU crypt().
>
> The problem lies in verify_user.c, function auth_user_pass().  The
> return value of crypt() will be NULL if the account happens to be locked
> or if the enctrypted password is in an unexpected format. So I would
> suggest that the code at the end of auth_user_pass() should go something
> like this:
>
>    epass = crypt(pass, encr);
>    if (epass == 0)
>    {
>      /* possibly a locked account */
>      return 0;
>    }
>    return (strcmp(encr, epass) == 0);
> }
>
> Another point: auth_user_pass() seems to get called from a thread spun
> off a listening socket, but calls getpwnam, getspnam and crypt which  re
> not re-entrant. Shoudln't there be a mutex or something similar
> protecting this whole function?  Apologies if I've missed some reason
> why it can't be re-entered.
>
> Best wishes,
>
> Ken Milmore.
>
>
>
>
>
> ------------------------------------------------------------------------------
> _______________________________________________
> xrdp-devel mailing list
> xrdp-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/xrdp-devel

------------------------------------------------------------------------------
_______________________________________________
xrdp-devel mailing list
xrdp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xrdp-devel

Reply via email to