@@ -120,6 +120,7 @@ struct cfg
120
120
const char * capath ;
121
121
const char * cainfo ;
122
122
const char * proxy ;
123
+ const char * prompt ;
123
124
const char * url ;
124
125
const char * urllist ;
125
126
const char * ldapserver ;
@@ -838,6 +839,8 @@ parse_cfg (int flags, int argc, const char **argv, struct cfg *cfg)
838
839
cfg -> cainfo = argv [i ] + 7 ;
839
840
if (strncmp (argv [i ], "proxy=" , 6 ) == 0 )
840
841
cfg -> proxy = argv [i ] + 6 ;
842
+ if (strncmp (argv [i ], "prompt=" , 7 ) == 0 )
843
+ cfg -> prompt = argv [i ] + 7 ;
841
844
if (strncmp (argv [i ], "url=" , 4 ) == 0 )
842
845
cfg -> url = argv [i ] + 4 ;
843
846
if (strncmp (argv [i ], "urllist=" , 8 ) == 0 )
@@ -935,6 +938,7 @@ parse_cfg (int flags, int argc, const char **argv, struct cfg *cfg)
935
938
DBG ("urllist=%s" , cfg -> urllist ? cfg -> urllist : "(null)" );
936
939
DBG ("capath=%s" , cfg -> capath ? cfg -> capath : "(null)" );
937
940
DBG ("cainfo=%s" , cfg -> cainfo ? cfg -> cainfo : "(null)" );
941
+ DBG ("prompt=%s" , cfg -> prompt ? cfg -> prompt : "(null)" );
938
942
DBG ("proxy=%s" , cfg -> proxy ? cfg -> proxy : "(null)" );
939
943
DBG ("token_id_length=%u" , cfg -> token_id_length );
940
944
DBG ("mode=%s" , cfg -> mode == CLIENT ? "client" : "chresp" );
@@ -1140,7 +1144,12 @@ pam_sm_authenticate (pam_handle_t * pamh,
1140
1144
pmsg [0 ] = & msg [0 ];
1141
1145
{
1142
1146
#define QUERY_TEMPLATE "YubiKey for `%s': "
1143
- size_t len = strlen (QUERY_TEMPLATE ) + strlen (user );
1147
+ size_t len = strlen (user );
1148
+ if (cfg -> prompt != NULL ) {
1149
+ len += strlen (cfg -> prompt );
1150
+ } else {
1151
+ len += strlen (QUERY_TEMPLATE );
1152
+ }
1144
1153
int wrote ;
1145
1154
1146
1155
msg [0 ].msg = malloc (len );
@@ -1150,7 +1159,11 @@ pam_sm_authenticate (pam_handle_t * pamh,
1150
1159
goto done ;
1151
1160
}
1152
1161
1153
- wrote = snprintf ((char * ) msg [0 ].msg , len , QUERY_TEMPLATE , user );
1162
+ if (cfg -> prompt != NULL ) {
1163
+ wrote = snprintf ((char * ) msg [0 ].msg , len , cfg -> prompt , user );
1164
+ } else {
1165
+ wrote = snprintf ((char * ) msg [0 ].msg , len , QUERY_TEMPLATE , user );
1166
+ }
1154
1167
if (wrote < 0 || wrote >= len )
1155
1168
{
1156
1169
retval = PAM_BUF_ERR ;
0 commit comments