mirror of
https://github.com/PowerShell/openssh-portable.git
synced 2025-07-26 23:34:55 +02:00
- AIX patch from Matt Richards <v2matt@btv.ibm.com> and David Rankin
<drankin@bohemians.lexington.ky.us>
This commit is contained in:
parent
6fe375dee4
commit
1fa154bb1e
3
CREDITS
3
CREDITS
@ -15,7 +15,7 @@ Chun-Chung Chen <cjj@u.washington.edu> - RPM fixes
|
|||||||
Dan Brosemer <odin@linuxfreak.com> - Autoconf support, build fixes
|
Dan Brosemer <odin@linuxfreak.com> - Autoconf support, build fixes
|
||||||
Darren Hall <dhall@virage.org> - AIX patches
|
Darren Hall <dhall@virage.org> - AIX patches
|
||||||
David Agraz <dagraz@jahoopa.com> - Build fixes
|
David Agraz <dagraz@jahoopa.com> - Build fixes
|
||||||
David Rankin <drankin@bohemians.lexington.ky.us> - libwrap, NetBSD fixes
|
David Rankin <drankin@bohemians.lexington.ky.us> - libwrap, AIX, NetBSD fixes
|
||||||
Gary E. Miller <gem@rellim.com> - SCO support
|
Gary E. Miller <gem@rellim.com> - SCO support
|
||||||
Holger Trapp <Holger.Trapp@Informatik.TU-Chemnitz.DE> - KRB4/AFS config patch
|
Holger Trapp <Holger.Trapp@Informatik.TU-Chemnitz.DE> - KRB4/AFS config patch
|
||||||
Jani Hakala <jahakala@cc.jyu.fi> - Patches
|
Jani Hakala <jahakala@cc.jyu.fi> - Patches
|
||||||
@ -26,6 +26,7 @@ Juergen Keil <jk@tools.de> - scp bugfixing
|
|||||||
Kees Cook <cook@cpoint.net> - scp fixes
|
Kees Cook <cook@cpoint.net> - scp fixes
|
||||||
Kiyokazu SUTO <suto@ks-and-ks.ne.jp> - Bugfixes
|
Kiyokazu SUTO <suto@ks-and-ks.ne.jp> - Bugfixes
|
||||||
Marc G. Fournier <marc.fournier@acadiau.ca> - Solaris patches
|
Marc G. Fournier <marc.fournier@acadiau.ca> - Solaris patches
|
||||||
|
Matt Richards <v2matt@btv.ibm.com> - AIX patches
|
||||||
Nalin Dahyabhai <nalin.dahyabhai@pobox.com> - PAM environment patch
|
Nalin Dahyabhai <nalin.dahyabhai@pobox.com> - PAM environment patch
|
||||||
Niels Kristian Bech Jensen <nkbj@image.dk> - Assorted patches
|
Niels Kristian Bech Jensen <nkbj@image.dk> - Assorted patches
|
||||||
Peter Kocks <peter.kocks@baygate.com> - Makefile fixes
|
Peter Kocks <peter.kocks@baygate.com> - Makefile fixes
|
||||||
|
@ -2,6 +2,8 @@
|
|||||||
- OpenBSD CVS:
|
- OpenBSD CVS:
|
||||||
- [packet.c]
|
- [packet.c]
|
||||||
getsockname() requires initialized tolen; andy@guildsoftware.com
|
getsockname() requires initialized tolen; andy@guildsoftware.com
|
||||||
|
- AIX patch from Matt Richards <v2matt@btv.ibm.com> and David Rankin
|
||||||
|
<drankin@bohemians.lexington.ky.us>
|
||||||
|
|
||||||
20000122
|
20000122
|
||||||
- Fix compilation of bsd-snprintf.c on Solaris, fix from Ben Taylor
|
- Fix compilation of bsd-snprintf.c on Solaris, fix from Ben Taylor
|
||||||
|
@ -12,6 +12,9 @@
|
|||||||
/* Define if you want to disable PAM support */
|
/* Define if you want to disable PAM support */
|
||||||
#undef DISABLE_PAM
|
#undef DISABLE_PAM
|
||||||
|
|
||||||
|
/* Define if you want to disable AIX4's authenticate function */
|
||||||
|
#undef WITH_AIXAUTHENTICATE
|
||||||
|
|
||||||
/* Define if you want to disable lastlog support */
|
/* Define if you want to disable lastlog support */
|
||||||
#undef DISABLE_LASTLOG
|
#undef DISABLE_LASTLOG
|
||||||
|
|
||||||
@ -30,6 +33,12 @@
|
|||||||
/* Define if using the Dante SOCKS library. */
|
/* Define if using the Dante SOCKS library. */
|
||||||
#undef HAVE_DANTE
|
#undef HAVE_DANTE
|
||||||
|
|
||||||
|
/* Define if using the Socks4 SOCKS library. */
|
||||||
|
#undef HAVE_SOCKS4
|
||||||
|
|
||||||
|
/* Define if using the Socks5 SOCKS library. */
|
||||||
|
#undef HAVE_SOCKS5
|
||||||
|
|
||||||
/* Define if you want to install preformatted manpages.*/
|
/* Define if you want to install preformatted manpages.*/
|
||||||
#undef MANTYPE
|
#undef MANTYPE
|
||||||
|
|
||||||
|
@ -11,13 +11,17 @@
|
|||||||
|
|
||||||
#ifndef USE_PAM
|
#ifndef USE_PAM
|
||||||
|
|
||||||
RCSID("$Id: auth-passwd.c,v 1.15 2000/01/06 01:03:13 damien Exp $");
|
RCSID("$Id: auth-passwd.c,v 1.16 2000/01/22 23:32:03 damien Exp $");
|
||||||
|
|
||||||
#include "packet.h"
|
#include "packet.h"
|
||||||
#include "ssh.h"
|
#include "ssh.h"
|
||||||
#include "servconf.h"
|
#include "servconf.h"
|
||||||
#include "xmalloc.h"
|
#include "xmalloc.h"
|
||||||
|
|
||||||
|
#ifdef WITH_AIXAUTHENTICATE
|
||||||
|
#include <login.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_SHADOW_H
|
#ifdef HAVE_SHADOW_H
|
||||||
# include <shadow.h>
|
# include <shadow.h>
|
||||||
#endif
|
#endif
|
||||||
@ -39,6 +43,11 @@ auth_password(struct passwd * pw, const char *password)
|
|||||||
#ifdef HAVE_SHADOW_H
|
#ifdef HAVE_SHADOW_H
|
||||||
struct spwd *spw;
|
struct spwd *spw;
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef WITH_AIXAUTHENTICATE
|
||||||
|
char *authmsg;
|
||||||
|
char *loginmsg;
|
||||||
|
int reenter = 1;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* deny if no user. */
|
/* deny if no user. */
|
||||||
if (pw == NULL)
|
if (pw == NULL)
|
||||||
@ -56,6 +65,11 @@ auth_password(struct passwd * pw, const char *password)
|
|||||||
/* Fall back to ordinary passwd authentication. */
|
/* Fall back to ordinary passwd authentication. */
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_AIXAUTHENTICATE
|
||||||
|
return (authenticate(pw->pw_name,password,&reenter,&authmsg) == 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef KRB4
|
#ifdef KRB4
|
||||||
if (options.kerberos_authentication == 1) {
|
if (options.kerberos_authentication == 1) {
|
||||||
int ret = auth_krb4_password(pw, password);
|
int ret = auth_krb4_password(pw, password);
|
||||||
|
@ -47,6 +47,9 @@
|
|||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <sys/un.h>
|
#include <sys/un.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#ifdef HAVE_STDDEF_H
|
||||||
|
#include <stddef.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "xmalloc.h"
|
#include "xmalloc.h"
|
||||||
#include "ssh.h"
|
#include "ssh.h"
|
||||||
|
3
cipher.c
3
cipher.c
@ -12,10 +12,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
RCSID("$Id: cipher.c,v 1.11 1999/12/14 22:34:31 damien Exp $");
|
RCSID("$Id: cipher.c,v 1.12 2000/01/22 23:32:03 damien Exp $");
|
||||||
|
|
||||||
#include "ssh.h"
|
#include "ssh.h"
|
||||||
#include "cipher.h"
|
#include "cipher.h"
|
||||||
|
#include "config.h"
|
||||||
|
|
||||||
#ifdef HAVE_OPENSSL
|
#ifdef HAVE_OPENSSL
|
||||||
#include <openssl/md5.h>
|
#include <openssl/md5.h>
|
||||||
|
44
configure.in
44
configure.in
@ -518,13 +518,53 @@ dnl Compile with dante SOCKS library
|
|||||||
AC_ARG_WITH(dante,
|
AC_ARG_WITH(dante,
|
||||||
[ --with-dante=DIR Use Dante SOCKS lib (default is system library path)],
|
[ --with-dante=DIR Use Dante SOCKS lib (default is system library path)],
|
||||||
[
|
[
|
||||||
AC_DEFINE(HAVE_DANTE)
|
SAVELIBS="$LIBS"
|
||||||
|
SOCKSLIBS=""
|
||||||
|
SOCKSLIBPATH=""
|
||||||
if test "x$withval" != "xno" ; then
|
if test "x$withval" != "xno" ; then
|
||||||
if test -n $withval ; then
|
if test -n $withval ; then
|
||||||
LIBS="$LIBS -L$withval"
|
LIBS="$LIBS -L$withval"
|
||||||
|
SOCKSLIBPATH="-L$withval"
|
||||||
fi
|
fi
|
||||||
LIBS="$LIBS -lsocks"
|
AC_CHECK_LIB(socks, Rconnect, AC_DEFINE(HAVE_DANTE) SOCKSLIBS="$SOCKSLIBPATH -lsocks")
|
||||||
fi
|
fi
|
||||||
|
LIBS="$SAVELIBS $SOCKSLIBS"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
dnl Compile with SOCKS4 SOCKS library
|
||||||
|
AC_ARG_WITH(socks4,
|
||||||
|
[ --with-socks4=DIR Use Socks4 SOCKS lib (default is system library path)],
|
||||||
|
[
|
||||||
|
SAVELIBS="$LIBS"
|
||||||
|
SOCKSLIBS=""
|
||||||
|
SOCKSLIBPATH=""
|
||||||
|
if test "x$withval" != "xno" ; then
|
||||||
|
if test -n $withval ; then
|
||||||
|
LIBS="$LIBS -L$withval"
|
||||||
|
SOCKSLIBPATH="-L$withval"
|
||||||
|
fi
|
||||||
|
AC_CHECK_LIB(socks, Rconnect, AC_DEFINE(HAVE_SOCKS4) SOCKSLIBS="$SOCKSLIBPATH -lsocks")
|
||||||
|
fi
|
||||||
|
LIBS="$SAVELIBS $SOCKSLIBS"
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
dnl Compile with SOCKS5 SOCKS library
|
||||||
|
AC_ARG_WITH(socks5,
|
||||||
|
[ --with-socks5=DIR Use Socks5 SOCKS lib (default is system library path)],
|
||||||
|
[
|
||||||
|
SAVELIBS="$LIBS"
|
||||||
|
SOCKSLIBS=""
|
||||||
|
SOCKSLIBPATH=""
|
||||||
|
if test "x$withval" != "xno" ; then
|
||||||
|
if test -n $withval ; then
|
||||||
|
LIBS="$LIBS -L$withval"
|
||||||
|
SOCKSLIBPATH="-L$withval"
|
||||||
|
fi
|
||||||
|
AC_CHECK_LIB(socks5, SOCKSconnect, AC_DEFINE(HAVE_SOCKS5) SOCKSLIBS="$SOCKSLIBPATH -lsocks5")
|
||||||
|
fi
|
||||||
|
LIBS="$SAVELIBS $SOCKSLIBS"
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
AC_ARG_WITH(catman,
|
AC_ARG_WITH(catman,
|
||||||
|
6
ssh.c
6
ssh.c
@ -11,7 +11,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
RCSID("$Id: ssh.c,v 1.17 2000/01/19 03:36:49 damien Exp $");
|
RCSID("$Id: ssh.c,v 1.18 2000/01/22 23:32:04 damien Exp $");
|
||||||
|
|
||||||
#include "xmalloc.h"
|
#include "xmalloc.h"
|
||||||
#include "ssh.h"
|
#include "ssh.h"
|
||||||
@ -217,6 +217,10 @@ main(int ac, char **av)
|
|||||||
/* Save our own name. */
|
/* Save our own name. */
|
||||||
av0 = av[0];
|
av0 = av[0];
|
||||||
|
|
||||||
|
#ifdef SOCKS
|
||||||
|
SOCKSinit(av0);
|
||||||
|
#endif /* SOCKS */
|
||||||
|
|
||||||
/* Initialize option structure to indicate that no values have been set. */
|
/* Initialize option structure to indicate that no values have been set. */
|
||||||
initialize_options(&options);
|
initialize_options(&options);
|
||||||
|
|
||||||
|
54
ssh.h
54
ssh.h
@ -13,7 +13,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* RCSID("$Id: ssh.h,v 1.24 2000/01/14 04:45:52 damien Exp $"); */
|
/* RCSID("$Id: ssh.h,v 1.25 2000/01/22 23:32:04 damien Exp $"); */
|
||||||
|
|
||||||
#ifndef SSH_H
|
#ifndef SSH_H
|
||||||
#define SSH_H
|
#define SSH_H
|
||||||
@ -752,7 +752,7 @@ extern int IPv4or6;
|
|||||||
#include "auth-pam.h"
|
#include "auth-pam.h"
|
||||||
#endif /* USE_PAM */
|
#endif /* USE_PAM */
|
||||||
|
|
||||||
#ifdef HAVE_DANTE
|
#if defined(HAVE_DANTE) || defined(HAVE_SOCKS4)
|
||||||
/*
|
/*
|
||||||
* The following defines map the normal socket operations to SOCKSified
|
* The following defines map the normal socket operations to SOCKSified
|
||||||
* versions coming from the Dante SOCKS package.
|
* versions coming from the Dante SOCKS package.
|
||||||
@ -795,6 +795,54 @@ ssize_t Rsendto (int, const void *,
|
|||||||
size_t, int, const struct sockaddr *, socklen_t);
|
size_t, int, const struct sockaddr *, socklen_t);
|
||||||
ssize_t Rwrite(int , const void *, size_t );
|
ssize_t Rwrite(int , const void *, size_t );
|
||||||
ssize_t Rwritev(int , const struct iovec *, int );
|
ssize_t Rwritev(int , const struct iovec *, int );
|
||||||
#endif /* HAVE_DANTE */
|
#endif /* HAVE_DANTE || HAVE_SOCKS4 */
|
||||||
|
|
||||||
|
#if defined(HAVE_SOCKS5)
|
||||||
|
/*
|
||||||
|
* The following defines map the normal socket operations to SOCKSified
|
||||||
|
* versions coming from the SOCKS package.
|
||||||
|
*/
|
||||||
|
#define accept SOCKSaccept
|
||||||
|
#define bind SOCKSbind
|
||||||
|
#define bindresvport SOCKSbindresvport
|
||||||
|
#define connect SOCKSconnect
|
||||||
|
#define gethostbyname SOCKSgethostbyname
|
||||||
|
#define gethostbyname2 SOCKSgethostbyname2
|
||||||
|
#define getpeername SOCKSgetpeername
|
||||||
|
#define getsockname SOCKSgetsockname
|
||||||
|
#define read SOCKSread
|
||||||
|
#define readv SOCKSreadv
|
||||||
|
#define recv SOCKSrecv
|
||||||
|
#define recvmsg SOCKSrecvmsg
|
||||||
|
#define recvfrom SOCKSrecvfrom
|
||||||
|
#define rresvport SOCKSrresvport
|
||||||
|
#define send SOCKSsend
|
||||||
|
#define sendmsg SOCKSsendmsg
|
||||||
|
#define sendto SOCKSsendto
|
||||||
|
#define write SOCKSwrite
|
||||||
|
#define writev SOCKSwritev
|
||||||
|
int SOCKSaccept (int, struct sockaddr *, socklen_t *);
|
||||||
|
int SOCKSbind (int, const struct sockaddr *, socklen_t);
|
||||||
|
int SOCKSbindresvport(int , struct sockaddr_in *);
|
||||||
|
int SOCKSconnect (int, const struct sockaddr *, socklen_t);
|
||||||
|
struct hostent *SOCKSgethostbyname(const char *);
|
||||||
|
struct hostent *SOCKSgethostbyname2(const char *, int);
|
||||||
|
int SOCKSgetpeername (int, struct sockaddr *, socklen_t *);
|
||||||
|
int SOCKSgetsockname (int, struct sockaddr *, socklen_t *);
|
||||||
|
ssize_t SOCKSread(int , void *, size_t );
|
||||||
|
ssize_t SOCKSreadv(int d, const struct iovec *iov, int iovcnt);
|
||||||
|
ssize_t SOCKSrecv (int, void *, size_t, int);
|
||||||
|
ssize_t SOCKSrecvfrom (int, void *, size_t, int, struct sockaddr *,
|
||||||
|
socklen_t *);
|
||||||
|
ssize_t SOCKSsend (int, const void *, size_t, int);
|
||||||
|
ssize_t SOCKSsendmsg (int, const struct msghdr *, int);
|
||||||
|
ssize_t SOCKSsendto (int, const void *,
|
||||||
|
size_t, int, const struct sockaddr *, socklen_t);
|
||||||
|
ssize_t SOCKSwrite(int , const void *, size_t );
|
||||||
|
ssize_t SOCKSwritev(int , const struct iovec *, int );
|
||||||
|
#endif /* SOCKS5 */
|
||||||
|
|
||||||
|
#if defined(DANTE) || defined(SOCKS4) || defined(SOCKS5)
|
||||||
|
#define SOCKS
|
||||||
|
#endif /* defined(DANTE) || defined(SOCKS4) || defined(SOCKS5) */
|
||||||
#endif /* SSH_H */
|
#endif /* SSH_H */
|
||||||
|
38
sshd.c
38
sshd.c
@ -1099,6 +1099,9 @@ allowed_user(struct passwd * pw)
|
|||||||
{
|
{
|
||||||
struct group *grp;
|
struct group *grp;
|
||||||
int i;
|
int i;
|
||||||
|
#ifdef WITH_AIXAUTHENTICATE
|
||||||
|
char *loginmsg;
|
||||||
|
#endif /* WITH_AIXAUTHENTICATE */
|
||||||
|
|
||||||
/* Shouldn't be called if pw is NULL, but better safe than sorry... */
|
/* Shouldn't be called if pw is NULL, but better safe than sorry... */
|
||||||
if (!pw)
|
if (!pw)
|
||||||
@ -1155,6 +1158,12 @@ allowed_user(struct passwd * pw)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef WITH_AIXAUTHENTICATE
|
||||||
|
if (loginrestrictions(pw->pw_name,S_LOGIN,NULL,&loginmsg) != 0)
|
||||||
|
return 0;
|
||||||
|
#endif /* WITH_AIXAUTHENTICATE */
|
||||||
|
|
||||||
/* We found no reason not to let this user try to log on... */
|
/* We found no reason not to let this user try to log on... */
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
@ -1179,6 +1188,10 @@ do_authentication()
|
|||||||
|
|
||||||
setproctitle("%s", user);
|
setproctitle("%s", user);
|
||||||
|
|
||||||
|
#ifdef WITH_AIXAUTHENTICATE
|
||||||
|
char *loginmsg;
|
||||||
|
#endif /* WITH_AIXAUTHENTICATE */
|
||||||
|
|
||||||
#ifdef AFS
|
#ifdef AFS
|
||||||
/* If machine has AFS, set process authentication group. */
|
/* If machine has AFS, set process authentication group. */
|
||||||
if (k_hasafs()) {
|
if (k_hasafs()) {
|
||||||
@ -1244,6 +1257,9 @@ do_authentication()
|
|||||||
get_canonical_hostname());
|
get_canonical_hostname());
|
||||||
}
|
}
|
||||||
/* The user has been authenticated and accepted. */
|
/* The user has been authenticated and accepted. */
|
||||||
|
#ifdef WITH_AIXAUTHENTICATE
|
||||||
|
loginsuccess(user,get_canonical_hostname(),"ssh",&loginmsg);
|
||||||
|
#endif /* WITH_AIXAUTHENTICATE */
|
||||||
packet_start(SSH_SMSG_SUCCESS);
|
packet_start(SSH_SMSG_SUCCESS);
|
||||||
packet_send();
|
packet_send();
|
||||||
packet_write_wait();
|
packet_write_wait();
|
||||||
@ -1498,8 +1514,7 @@ do_authloop(struct passwd * pw)
|
|||||||
|
|
||||||
if (authenticated) {
|
if (authenticated) {
|
||||||
#ifdef USE_PAM
|
#ifdef USE_PAM
|
||||||
if (!do_pam_account(pw->pw_name, client_user))
|
if (!do_pam_account(pw->pw_name, client_user)) {
|
||||||
{
|
|
||||||
if (client_user != NULL)
|
if (client_user != NULL)
|
||||||
xfree(client_user);
|
xfree(client_user);
|
||||||
|
|
||||||
@ -1582,6 +1597,11 @@ do_fake_authloop(char *user)
|
|||||||
packet_start(SSH_SMSG_FAILURE);
|
packet_start(SSH_SMSG_FAILURE);
|
||||||
packet_send();
|
packet_send();
|
||||||
packet_write_wait();
|
packet_write_wait();
|
||||||
|
#ifdef WITH_AIXAUTHENTICATE
|
||||||
|
if (strncmp(get_authname(type),"password",
|
||||||
|
strlen(get_authname(type))) == 0)
|
||||||
|
loginfailed(pw->pw_name,get_canonical_hostname(),"ssh");
|
||||||
|
#endif /* WITH_AIXAUTHENTICATE */
|
||||||
}
|
}
|
||||||
/* NOTREACHED */
|
/* NOTREACHED */
|
||||||
abort();
|
abort();
|
||||||
@ -2423,6 +2443,18 @@ do_child(const char *command, struct passwd * pw, const char *term,
|
|||||||
if (display)
|
if (display)
|
||||||
child_set_env(&env, &envsize, "DISPLAY", display);
|
child_set_env(&env, &envsize, "DISPLAY", display);
|
||||||
|
|
||||||
|
#ifdef _AIX
|
||||||
|
{
|
||||||
|
char *authstate,*krb5cc;
|
||||||
|
|
||||||
|
if ((authstate = getenv("AUTHSTATE")) != NULL)
|
||||||
|
child_set_env(&env,&envsize,"AUTHSTATE",authstate);
|
||||||
|
|
||||||
|
if ((krb5cc = getenv("KRB5CCNAME")) != NULL)
|
||||||
|
child_set_env(&env,&envsize,"KRB5CCNAME",krb5cc);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef KRB4
|
#ifdef KRB4
|
||||||
{
|
{
|
||||||
extern char *ticket;
|
extern char *ticket;
|
||||||
@ -2444,6 +2476,8 @@ do_child(const char *command, struct passwd * pw, const char *term,
|
|||||||
child_set_env(&env, &envsize, SSH_AUTHSOCKET_ENV_NAME,
|
child_set_env(&env, &envsize, SSH_AUTHSOCKET_ENV_NAME,
|
||||||
auth_get_socket_name());
|
auth_get_socket_name());
|
||||||
|
|
||||||
|
read_environment_file(&env,&envsize,"/etc/environment");
|
||||||
|
|
||||||
/* read $HOME/.ssh/environment. */
|
/* read $HOME/.ssh/environment. */
|
||||||
if (!options.use_login) {
|
if (!options.use_login) {
|
||||||
snprintf(buf, sizeof buf, "%.200s/.ssh/environment", pw->pw_dir);
|
snprintf(buf, sizeof buf, "%.200s/.ssh/environment", pw->pw_dir);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user