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]