mirror of
https://github.com/PowerShell/openssh-portable.git
synced 2025-07-27 07:44:29 +02:00
- (djm) [auth-pam.c] snprintf->strl*, fix server message length calculations
This commit is contained in:
parent
dbc2296e2c
commit
daffc6a115
@ -1,3 +1,6 @@
|
|||||||
|
20041016
|
||||||
|
- (djm) [auth-pam.c] snprintf->strl*, fix server message length calculations
|
||||||
|
|
||||||
20041006
|
20041006
|
||||||
- (dtucker) [README.privsep] Bug #939: update info about HP-UX Trusted Mode
|
- (dtucker) [README.privsep] Bug #939: update info about HP-UX Trusted Mode
|
||||||
and other PAM platforms.
|
and other PAM platforms.
|
||||||
@ -1763,4 +1766,4 @@
|
|||||||
- (djm) Trim deprecated options from INSTALL. Mention UsePAM
|
- (djm) Trim deprecated options from INSTALL. Mention UsePAM
|
||||||
- (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu
|
- (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu
|
||||||
|
|
||||||
$Id: ChangeLog,v 1.3558 2004/10/06 13:15:44 dtucker Exp $
|
$Id: ChangeLog,v 1.3559 2004/10/16 08:52:44 djm Exp $
|
||||||
|
17
auth-pam.c
17
auth-pam.c
@ -47,7 +47,7 @@
|
|||||||
|
|
||||||
/* Based on $FreeBSD: src/crypto/openssh/auth2-pam-freebsd.c,v 1.11 2003/03/31 13:48:18 des Exp $ */
|
/* Based on $FreeBSD: src/crypto/openssh/auth2-pam-freebsd.c,v 1.11 2003/03/31 13:48:18 des Exp $ */
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
RCSID("$Id: auth-pam.c,v 1.117 2004/09/11 13:07:03 dtucker Exp $");
|
RCSID("$Id: auth-pam.c,v 1.118 2004/10/16 08:52:44 djm Exp $");
|
||||||
|
|
||||||
#ifdef USE_PAM
|
#ifdef USE_PAM
|
||||||
#if defined(HAVE_SECURITY_PAM_APPL_H)
|
#if defined(HAVE_SECURITY_PAM_APPL_H)
|
||||||
@ -654,7 +654,7 @@ sshpam_query(void *ctx, char **name, char **info,
|
|||||||
size_t plen;
|
size_t plen;
|
||||||
u_char type;
|
u_char type;
|
||||||
char *msg;
|
char *msg;
|
||||||
size_t len;
|
size_t len, mlen;
|
||||||
|
|
||||||
debug3("PAM: %s entering", __func__);
|
debug3("PAM: %s entering", __func__);
|
||||||
buffer_init(&buffer);
|
buffer_init(&buffer);
|
||||||
@ -667,22 +667,27 @@ sshpam_query(void *ctx, char **name, char **info,
|
|||||||
while (ssh_msg_recv(ctxt->pam_psock, &buffer) == 0) {
|
while (ssh_msg_recv(ctxt->pam_psock, &buffer) == 0) {
|
||||||
type = buffer_get_char(&buffer);
|
type = buffer_get_char(&buffer);
|
||||||
msg = buffer_get_string(&buffer, NULL);
|
msg = buffer_get_string(&buffer, NULL);
|
||||||
|
mlen = strlen(msg);
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case PAM_PROMPT_ECHO_ON:
|
case PAM_PROMPT_ECHO_ON:
|
||||||
case PAM_PROMPT_ECHO_OFF:
|
case PAM_PROMPT_ECHO_OFF:
|
||||||
*num = 1;
|
*num = 1;
|
||||||
len = plen + strlen(msg) + 1;
|
len = plen + mlen + 1;
|
||||||
**prompts = xrealloc(**prompts, len);
|
**prompts = xrealloc(**prompts, len);
|
||||||
plen += snprintf(**prompts + plen, len, "%s", msg);
|
strlcpy(**prompts + plen, msg, len - plen);
|
||||||
|
plen += mlen;
|
||||||
**echo_on = (type == PAM_PROMPT_ECHO_ON);
|
**echo_on = (type == PAM_PROMPT_ECHO_ON);
|
||||||
xfree(msg);
|
xfree(msg);
|
||||||
return (0);
|
return (0);
|
||||||
case PAM_ERROR_MSG:
|
case PAM_ERROR_MSG:
|
||||||
case PAM_TEXT_INFO:
|
case PAM_TEXT_INFO:
|
||||||
/* accumulate messages */
|
/* accumulate messages */
|
||||||
len = plen + strlen(msg) + 2;
|
len = plen + mlen + 2;
|
||||||
**prompts = xrealloc(**prompts, len);
|
**prompts = xrealloc(**prompts, len);
|
||||||
plen += snprintf(**prompts + plen, len, "%s\n", msg);
|
strlcpy(**prompts + plen, msg, len - plen);
|
||||||
|
plen += mlen;
|
||||||
|
strlcat(**prompts + plen, "\n", len - plen);
|
||||||
|
plen++;
|
||||||
xfree(msg);
|
xfree(msg);
|
||||||
break;
|
break;
|
||||||
case PAM_SUCCESS:
|
case PAM_SUCCESS:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user