- (dtucker) [auth-pam.c] Bug #1033: Fix warnings building with PAM on Linux:
warning: dereferencing type-punned pointer will break strict-aliasing rules warning: passing arg 3 of `pam_get_item' from incompatible pointer type The type-punned pointer fix is based on a patch from SuSE's rpm. ok djm@
This commit is contained in:
parent
d98dce6929
commit
f08bdb5a7e
|
@ -97,6 +97,10 @@
|
||||||
ok deraadt@, cloder@, djm@
|
ok deraadt@, cloder@, djm@
|
||||||
- (dtucker) [regress/reexec.sh] Add ${EXEEXT} so this test also works on
|
- (dtucker) [regress/reexec.sh] Add ${EXEEXT} so this test also works on
|
||||||
Cygwin.
|
Cygwin.
|
||||||
|
- (dtucker) [auth-pam.c] Bug #1033: Fix warnings building with PAM on Linux:
|
||||||
|
warning: dereferencing type-punned pointer will break strict-aliasing rules
|
||||||
|
warning: passing arg 3 of `pam_get_item' from incompatible pointer type
|
||||||
|
The type-punned pointer fix is based on a patch from SuSE's rpm. ok djm@
|
||||||
|
|
||||||
20050524
|
20050524
|
||||||
- (djm) [contrib/caldera/openssh.spec contrib/redhat/openssh.spec]
|
- (djm) [contrib/caldera/openssh.spec contrib/redhat/openssh.spec]
|
||||||
|
@ -2596,4 +2600,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.3787 2005/05/26 03:43:57 dtucker Exp $
|
$Id: ChangeLog,v 1.3788 2005/05/26 09:59:48 dtucker Exp $
|
||||||
|
|
26
auth-pam.c
26
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.122 2005/05/25 06:18:10 dtucker Exp $");
|
RCSID("$Id: auth-pam.c,v 1.123 2005/05/26 09:59:48 dtucker Exp $");
|
||||||
|
|
||||||
#ifdef USE_PAM
|
#ifdef USE_PAM
|
||||||
#if defined(HAVE_SECURITY_PAM_APPL_H)
|
#if defined(HAVE_SECURITY_PAM_APPL_H)
|
||||||
|
@ -56,6 +56,13 @@ RCSID("$Id: auth-pam.c,v 1.122 2005/05/25 06:18:10 dtucker Exp $");
|
||||||
#include <pam/pam_appl.h>
|
#include <pam/pam_appl.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* OpenGroup RFC86.0 and XSSO specify no "const" on arguments */
|
||||||
|
#ifdef PAM_SUN_CODEBASE
|
||||||
|
# define sshpam_const /* Solaris, HP-UX, AIX */
|
||||||
|
#else
|
||||||
|
# define sshpam_const const /* LinuxPAM, OpenPAM */
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "auth.h"
|
#include "auth.h"
|
||||||
#include "auth-pam.h"
|
#include "auth-pam.h"
|
||||||
#include "buffer.h"
|
#include "buffer.h"
|
||||||
|
@ -300,7 +307,7 @@ import_environments(Buffer *b)
|
||||||
* Conversation function for authentication thread.
|
* Conversation function for authentication thread.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
sshpam_thread_conv(int n, struct pam_message **msg,
|
sshpam_thread_conv(int n, sshpam_const struct pam_message **msg,
|
||||||
struct pam_response **resp, void *data)
|
struct pam_response **resp, void *data)
|
||||||
{
|
{
|
||||||
Buffer buffer;
|
Buffer buffer;
|
||||||
|
@ -399,8 +406,10 @@ sshpam_thread(void *ctxtp)
|
||||||
char **env_from_pam;
|
char **env_from_pam;
|
||||||
u_int i;
|
u_int i;
|
||||||
const char *pam_user;
|
const char *pam_user;
|
||||||
|
const char **ptr_pam_user = &pam_user;
|
||||||
|
|
||||||
pam_get_item(sshpam_handle, PAM_USER, (void **)&pam_user);
|
pam_get_item(sshpam_handle, PAM_USER,
|
||||||
|
(sshpam_const void **)ptr_pam_user);
|
||||||
environ[0] = NULL;
|
environ[0] = NULL;
|
||||||
|
|
||||||
if (sshpam_authctxt != NULL) {
|
if (sshpam_authctxt != NULL) {
|
||||||
|
@ -492,7 +501,7 @@ sshpam_thread_cleanup(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
sshpam_null_conv(int n, struct pam_message **msg,
|
sshpam_null_conv(int n, sshpam_const struct pam_message **msg,
|
||||||
struct pam_response **resp, void *data)
|
struct pam_response **resp, void *data)
|
||||||
{
|
{
|
||||||
debug3("PAM: %s entering, %d messages", __func__, n);
|
debug3("PAM: %s entering, %d messages", __func__, n);
|
||||||
|
@ -502,7 +511,7 @@ sshpam_null_conv(int n, struct pam_message **msg,
|
||||||
static struct pam_conv null_conv = { sshpam_null_conv, NULL };
|
static struct pam_conv null_conv = { sshpam_null_conv, NULL };
|
||||||
|
|
||||||
static int
|
static int
|
||||||
sshpam_store_conv(int n, struct pam_message **msg,
|
sshpam_store_conv(int n, sshpam_const struct pam_message **msg,
|
||||||
struct pam_response **resp, void *data)
|
struct pam_response **resp, void *data)
|
||||||
{
|
{
|
||||||
struct pam_response *reply;
|
struct pam_response *reply;
|
||||||
|
@ -571,11 +580,12 @@ sshpam_init(Authctxt *authctxt)
|
||||||
{
|
{
|
||||||
extern char *__progname;
|
extern char *__progname;
|
||||||
const char *pam_rhost, *pam_user, *user = authctxt->user;
|
const char *pam_rhost, *pam_user, *user = authctxt->user;
|
||||||
|
const char **ptr_pam_user = &pam_user;
|
||||||
|
|
||||||
if (sshpam_handle != NULL) {
|
if (sshpam_handle != NULL) {
|
||||||
/* We already have a PAM context; check if the user matches */
|
/* We already have a PAM context; check if the user matches */
|
||||||
sshpam_err = pam_get_item(sshpam_handle,
|
sshpam_err = pam_get_item(sshpam_handle,
|
||||||
PAM_USER, (void **)&pam_user);
|
PAM_USER, (sshpam_const void **)ptr_pam_user);
|
||||||
if (sshpam_err == PAM_SUCCESS && strcmp(user, pam_user) == 0)
|
if (sshpam_err == PAM_SUCCESS && strcmp(user, pam_user) == 0)
|
||||||
return (0);
|
return (0);
|
||||||
pam_end(sshpam_handle, sshpam_err);
|
pam_end(sshpam_handle, sshpam_err);
|
||||||
|
@ -891,7 +901,7 @@ do_pam_setcred(int init)
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
sshpam_tty_conv(int n, struct pam_message **msg,
|
sshpam_tty_conv(int n, sshpam_const struct pam_message **msg,
|
||||||
struct pam_response **resp, void *data)
|
struct pam_response **resp, void *data)
|
||||||
{
|
{
|
||||||
char input[PAM_MAX_MSG_SIZE];
|
char input[PAM_MAX_MSG_SIZE];
|
||||||
|
@ -1050,7 +1060,7 @@ free_pam_environment(char **env)
|
||||||
* display.
|
* display.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
sshpam_passwd_conv(int n, struct pam_message **msg,
|
sshpam_passwd_conv(int n, sshpam_const struct pam_message **msg,
|
||||||
struct pam_response **resp, void *data)
|
struct pam_response **resp, void *data)
|
||||||
{
|
{
|
||||||
struct pam_response *reply;
|
struct pam_response *reply;
|
||||||
|
|
Loading…
Reference in New Issue