path: root/doc/man/pam_conv.3
diff options
Diffstat (limited to 'doc/man/pam_conv.3')
1 files changed, 28 insertions, 16 deletions
diff --git a/doc/man/pam_conv.3 b/doc/man/pam_conv.3
index 232d3f18..ef595844 100644
--- a/doc/man/pam_conv.3
+++ b/doc/man/pam_conv.3
@@ -1,8 +1,11 @@
-.\" ** You probably do not want to edit this file directly **
-.\" It was generated using the DocBook XSL Stylesheets (version 1.69.1).
-.\" Instead of manually editing it, you probably should edit the DocBook XML
-.\" source for it and then use the DocBook XSL Stylesheets to regenerate it.
-.TH "PAM_CONV" "3" "05/04/2006" "Linux\-PAM Manual" "Linux\-PAM Manual"
+.\" Title: pam_conv
+.\" Author:
+.\" Generator: DocBook XSL Stylesheets v1.70.1 <>
+.\" Date: 06/02/2006
+.\" Manual: Linux\-PAM Manual
+.\" Source: Linux\-PAM Manual
+.TH "PAM_CONV" "3" "06/02/2006" "Linux\-PAM Manual" "Linux\-PAM Manual"
.\" disable hyphenation
.\" disable justification (adjust text to left margin only)
@@ -10,9 +13,14 @@
pam_conv \- PAM conversation function
-\fB#include <security/pam_appl.h>\fR
+.ft B
+#include <security/pam_appl.h>
+.RS 3n
struct pam_message {
int msg_style;
@@ -31,6 +39,7 @@ struct pam_conv {
The PAM library uses an application\-defined callback to allow a direct communication between a loaded module and the application. This callback is specified by the
@@ -68,16 +77,16 @@ Each message can have one of four types, specified by the
member of
\fIstruct pam_message\fR:
+.TP 3n
Obtain a string without echoing any text.
+.TP 3n
Obtain a string whilst echoing text.
+.TP 3n
Display an error message.
+.TP 3n
Display some text.
@@ -86,30 +95,33 @@ The point of having an array of messages is that it becomes possible to pass a n
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.
For what its worth the two known module writer work\-arounds for trying to maintain source level compatibility with both PAM implementations are:
-.TP 3
+.TP 3n
never call the conversation function with num_msg greater than one.
+.TP 3n
set up msg as doubly referenced so both types of conversation function can find the messages. That is, make
+.RS 3n
msg[n] = & (( *msg )[n])
+.TP 3n
Memory buffer error.
+.TP 3n
Conversation failure. The application should not set
+.TP 3n