Joachim Keltsch <[EMAIL PROTECTED]> writes:

> Package:              libpam-krb5
> Version:              2.2-1
> Severity:             serious

> Hello *,

> The pam_krb5.so module provides a callback function that queries users
> for their passwords or displays informational messages. This callback is
> registered to various Kerberos functions. All of these Kerberos
> functions usually call the callback with ONE message string only.

> This works perfectly fine.

> However, if a user is to change her password, Kerberos will call the
> callback with THREE messages:
> i)   Password expired.  You must change it now.
> ii)  Enter new password:
> iii) Enter it again:

> The array of pointers to these messages is handled incorrectly.
> It is processed as:
>       one single pointer pointing to an array of pam_messages.

> However, PAM expects it to be:
>       an array of pointers, each pointing to one single pam_message

Yeah, this would be the following problem, noted in the PAM application
developer's guide:

    In passing, it is worth noting that there is a descrepency between the
    way Linux-PAM handles the const struct pam_message **msg conversation
    function argument from the way that Solaris' PAM (and derivitives,
    known to include HP/UX, are there others?) does. Linux-PAM interprets
    the msg argument as entirely equivalent to the following prototype
    const struct pam_message *msg[] (which, in spirit, is consistent with
    the commonly used prototypes for argv argument to the familiar main()
    function: char **argv; and char *argv[]). Said another way Linux-PAM
    interprets the msg argument as a pointer to an array of num_meg read
    only 'struct pam_message' pointers. Solaris' PAM implementation
    interprets this argument as a pointer to a pointer to an array of
    num_meg pam_message structures. Fortunately, perhaps, for most
    module/application developers when num_msg has a value of one these
    two definitions are entirely equivalent. Unfortunately, casually
    raising this number to two has led to unanticipated compatibility
    problems.

I believe the conversation function may have originally been written for
Solaris.

It looks like your patch implements the workaround described there.  Thank
you!  It will be in the next release, which I'll try to upload in the next
few days.

-- 
Russ Allbery ([EMAIL PROTECTED])               <http://www.eyrie.org/~eagle/>


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to