- Renamed BSD helper function files to bsd-*
- Added tests for login and daemon and OpenBSD replacements for when they are absent.
This commit is contained in:
parent
8029775b77
commit
04f801456a
|
@ -14,6 +14,9 @@
|
|||
- Added autoconf option to enable AFS support (untested)
|
||||
- Added autoconf option to enable S/Key support (untested)
|
||||
- Added autoconf option to enable TCP wrappers support (compiles OK)
|
||||
- Renamed BSD helper function files to bsd-*
|
||||
- Added tests for login and daemon and OpenBSD replacements for when they
|
||||
are absent.
|
||||
|
||||
19991118
|
||||
- Merged OpenBSD CVS changes
|
||||
|
|
|
@ -27,18 +27,18 @@ OBJS= authfd.o authfile.o auth-passwd.o auth-rhosts.o auth-rh-rsa.o \
|
|||
hostfile.o log-client.o login.o log-server.o match.o mpaux.o \
|
||||
packet.o pty.o readconf.o readpass.o rsa.o servconf.o serverloop.o \
|
||||
sshconnect.o tildexpand.o ttymodes.o uidswap.o xmalloc.o \
|
||||
helper.o mktemp.o strlcpy.o rc4.o
|
||||
helper.o bsd-mktemp.o bsd-strlcpy.o bsd-daemon.o bsd-login.o rc4.o
|
||||
|
||||
all: $(OBJS) $(TARGETS)
|
||||
|
||||
libssh.a: authfd.o authfile.o bufaux.o buffer.o canohost.o channels.o cipher.o compat.o compress.o crc32.o deattack.o hostfile.o match.o mpaux.o nchan.o packet.o readpass.o rsa.o tildexpand.o ttymodes.o uidswap.o xmalloc.o helper.o rc4.o mktemp.o strlcpy.o log.o fingerprint.o
|
||||
libssh.a: authfd.o authfile.o bufaux.o buffer.o canohost.o channels.o cipher.o compat.o compress.o crc32.o deattack.o hostfile.o match.o mpaux.o nchan.o packet.o readpass.o rsa.o tildexpand.o ttymodes.o uidswap.o xmalloc.o helper.o rc4.o bsd-mktemp.o bsd-strlcpy.o log.o fingerprint.o
|
||||
$(AR) rv $@ $^
|
||||
$(RANLIB) $@
|
||||
|
||||
ssh: ssh.o sshconnect.o log-client.o readconf.o clientloop.o libssh.a
|
||||
$(CC) -o $@ $^ $(LFLAGS) $(LIBS)
|
||||
|
||||
sshd: sshd.o auth-rhosts.o auth-passwd.o auth-rsa.o auth-rh-rsa.o pty.o log-server.o login.o servconf.o serverloop.o libssh.a
|
||||
sshd: sshd.o auth-rhosts.o auth-passwd.o auth-rsa.o auth-rh-rsa.o pty.o log-server.o login.o servconf.o serverloop.o bsd-login.o bsd-daemon.o libssh.a
|
||||
$(CC) -o $@ $^ $(LFLAGS) $(LIBS)
|
||||
|
||||
scp: scp.o libssh.a
|
||||
|
|
21
README
21
README
|
@ -10,9 +10,9 @@ Niels Provos, Theo de Raadt, and Dug Song. It has a homepage at
|
|||
http://www.openssh.com/
|
||||
|
||||
This port consists of the re-introduction of autoconf support, PAM
|
||||
support (for Linux and Solaris), EGD[1] support, and replacements for
|
||||
OpenBSD library functions that are (regrettably) absent from most
|
||||
other unices. This patch has been best tested on Linux, though some
|
||||
support (for Linux and Solaris), EGD[1] support, and replacements
|
||||
for OpenBSD library functions that are (regrettably) absent from
|
||||
other unices. This port has been best tested on Linux, though some
|
||||
Solaris support is beginning to filter in. This version actively
|
||||
tracks changes in the OpenBSD CVS repository.
|
||||
|
||||
|
@ -22,8 +22,8 @@ all logins, not just when using password authentication.
|
|||
|
||||
All new code is released under a XFree style license, which is very
|
||||
liberal. Please refer to the source files for details. The code in
|
||||
strlcpy.c and mktemp.c is from the OpenBSD project and has its own
|
||||
license (again, see source file for details).
|
||||
bsd-*.[ch] is from the OpenBSD project and has its own license (again,
|
||||
see the source files for details).
|
||||
|
||||
OpenSSH depends on Zlib[2], OpenSSL[3] and optionally PAM[4]. To build
|
||||
the GNOME[5] pass-phrase requester (--with-gnome-askpass), you will
|
||||
|
@ -52,13 +52,14 @@ Credits -
|
|||
Aaron Campbell, Bob Beck, Markus Friedl, Niels Provos,
|
||||
Theo de Raadt, and Dug Song - Creators of OpenSSH
|
||||
'jonchen' - the original author of PAM support of SSH
|
||||
Chip Salzenberg <chip@valinux.com> - Assorted patches
|
||||
Dan Brosemer <odin@linuxfreak.com> - Autoconf and build fixes & Debian scripts
|
||||
Nalin Dahyabhai <nalin.dahyabhai@pobox.com> - PAM environment patch
|
||||
Phil Hands <phil@hands.com> - Debian scripts, assorted patches
|
||||
Niels Kristian Bech Jensen <nkbj@image.dk> - Assorted patches
|
||||
Marc G. Fournier <marc.fournier@acadiau.ca> - Solaris patches
|
||||
Thomas Neumann <tom@smart.ruhr.de> - Shadow passwords
|
||||
Jim Knoble <jmknoble@pobox.com> - RPM spec file fixes
|
||||
Marc G. Fournier <marc.fournier@acadiau.ca> - Solaris patches
|
||||
Nalin Dahyabhai <nalin.dahyabhai@pobox.com> - PAM environment patch
|
||||
Niels Kristian Bech Jensen <nkbj@image.dk> - Assorted patches
|
||||
Phil Hands <phil@hands.com> - Debian scripts, assorted patches
|
||||
Thomas Neumann <tom@smart.ruhr.de> - Shadow passwords
|
||||
|
||||
Miscellania -
|
||||
|
||||
|
|
|
@ -42,6 +42,12 @@
|
|||
/* Define if you want TCP Wrappers support */
|
||||
#undef LIBWRAP
|
||||
|
||||
/* Define if your libraries define login() */
|
||||
#undef HAVE_LOGIN
|
||||
|
||||
/* Define if your libraries define daemon() */
|
||||
#undef HAVE_DAEMON
|
||||
|
||||
@BOTTOM@
|
||||
|
||||
/* ******************* Shouldn't need to edit below this line ************** */
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
/*-
|
||||
* Copyright (c) 1990, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#ifndef HAVE_DAEMON
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$OpenBSD: daemon.c,v 1.2 1996/08/19 08:22:13 tholo Exp $";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <paths.h>
|
||||
#include <unistd.h>
|
||||
|
||||
int
|
||||
daemon(nochdir, noclose)
|
||||
int nochdir, noclose;
|
||||
{
|
||||
int fd;
|
||||
|
||||
switch (fork()) {
|
||||
case -1:
|
||||
return (-1);
|
||||
case 0:
|
||||
break;
|
||||
default:
|
||||
_exit(0);
|
||||
}
|
||||
|
||||
if (setsid() == -1)
|
||||
return (-1);
|
||||
|
||||
if (!nochdir)
|
||||
(void)chdir("/");
|
||||
|
||||
if (!noclose && (fd = open(_PATH_DEVNULL, O_RDWR, 0)) != -1) {
|
||||
(void)dup2(fd, STDIN_FILENO);
|
||||
(void)dup2(fd, STDOUT_FILENO);
|
||||
(void)dup2(fd, STDERR_FILENO);
|
||||
if (fd > 2)
|
||||
(void)close (fd);
|
||||
}
|
||||
return (0);
|
||||
}
|
||||
|
||||
#endif /* !HAVE_DAEMON */
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
#ifndef _BSD_DAEMON_H
|
||||
#define _BSD_DAEMON_H
|
||||
|
||||
#include "config.h"
|
||||
#ifndef HAVE_DAEMON
|
||||
int daemon(int nochdir, int noclose);
|
||||
#endif /* !HAVE_DAEMON */
|
||||
|
||||
#endif /* _BSD_DAEMON_H */
|
|
@ -0,0 +1,83 @@
|
|||
/* $OpenBSD: login.c,v 1.5 1998/07/13 02:11:12 millert Exp $ */
|
||||
/*
|
||||
* Copyright (c) 1988, 1993
|
||||
* The Regents of the University of California. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. All advertising materials mentioning features or use of this software
|
||||
* must display the following acknowledgement:
|
||||
* This product includes software developed by the University of
|
||||
* California, Berkeley and its contributors.
|
||||
* 4. Neither the name of the University nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#ifndef HAVE_LOGIN
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
/* from: static char sccsid[] = "@(#)login.c 8.1 (Berkeley) 6/4/93"; */
|
||||
static char *rcsid = "$Id: bsd-login.c,v 1.1 1999/11/19 04:32:34 damien Exp $";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <stdlib.h>
|
||||
#include <utmp.h>
|
||||
#include <stdio.h>
|
||||
|
||||
void
|
||||
login(utp)
|
||||
struct utmp *utp;
|
||||
{
|
||||
struct utmp old_ut;
|
||||
register int fd;
|
||||
int tty;
|
||||
|
||||
tty = ttyslot();
|
||||
if (tty > 0 && (fd = open(_PATH_UTMP, O_RDWR|O_CREAT, 0644)) >= 0) {
|
||||
(void)lseek(fd, (off_t)(tty * sizeof(struct utmp)), SEEK_SET);
|
||||
/*
|
||||
* Prevent luser from zero'ing out ut_host.
|
||||
* If the new ut_line is empty but the old one is not
|
||||
* and ut_line and ut_name match, preserve the old ut_line.
|
||||
*/
|
||||
if (read(fd, &old_ut, sizeof(struct utmp)) ==
|
||||
sizeof(struct utmp) && utp->ut_host[0] == '\0' &&
|
||||
old_ut.ut_host[0] != '\0' &&
|
||||
strncmp(old_ut.ut_line, utp->ut_line, UT_LINESIZE) == 0 &&
|
||||
strncmp(old_ut.ut_name, utp->ut_name, UT_NAMESIZE) == 0)
|
||||
(void)memcpy(utp->ut_host, old_ut.ut_host, UT_HOSTSIZE);
|
||||
(void)lseek(fd, (off_t)(tty * sizeof(struct utmp)), SEEK_SET);
|
||||
(void)write(fd, utp, sizeof(struct utmp));
|
||||
(void)close(fd);
|
||||
}
|
||||
if ((fd = open(_PATH_WTMP, O_WRONLY|O_APPEND, 0)) >= 0) {
|
||||
(void)write(fd, utp, sizeof(struct utmp));
|
||||
(void)close(fd);
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* HAVE_LOGIN */
|
|
@ -0,0 +1,13 @@
|
|||
#ifndef _BSD_LOGIN_H
|
||||
#define _BSD_LOGIN_H
|
||||
|
||||
#include "config.h"
|
||||
#ifndef HAVE_LOGIN
|
||||
|
||||
#include <utmp.h>
|
||||
|
||||
void login(struct utmp *utp);
|
||||
|
||||
#endif /* !HAVE_LOGIN */
|
||||
|
||||
#endif /* _BSD_LOGIN_H */
|
|
@ -34,6 +34,10 @@
|
|||
* SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
|
||||
#ifndef HAVE_MKDTEMP
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
static char rcsid[] = "$OpenBSD: mktemp.c,v 1.13 1998/06/30 23:03:13 deraadt Exp $";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
@ -47,11 +51,8 @@ static char rcsid[] = "$OpenBSD: mktemp.c,v 1.13 1998/06/30 23:03:13 deraadt Exp
|
|||
#include <ctype.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "config.h"
|
||||
#include "helper.h"
|
||||
|
||||
#ifndef HAVE_MKDTEMP
|
||||
|
||||
static int _gettemp(char *, int *, int, int);
|
||||
|
||||
int
|
|
@ -1,5 +1,5 @@
|
|||
#ifndef _MKTEMP_H
|
||||
#define _MKTEMP_H
|
||||
#ifndef _BSD_MKTEMP_H
|
||||
#define _BSD_MKTEMP_H
|
||||
|
||||
#include "config.h"
|
||||
#ifndef HAVE_MKDTEMP
|
||||
|
@ -8,4 +8,4 @@ int mkstemp(char *path);
|
|||
char *mkdtemp(char *path);
|
||||
#endif /* !HAVE_MKDTEMP */
|
||||
|
||||
#endif /* _MKTEMP_H */
|
||||
#endif /* _BSD_MKTEMP_H */
|
|
@ -27,6 +27,9 @@
|
|||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include "config.h"
|
||||
#ifndef HAVE_STRLCPY
|
||||
|
||||
#if defined(LIBC_SCCS) && !defined(lint)
|
||||
static char *rcsid = "$OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $";
|
||||
#endif /* LIBC_SCCS and not lint */
|
||||
|
@ -34,9 +37,6 @@ static char *rcsid = "$OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp
|
|||
#include <sys/types.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "config.h"
|
||||
#ifndef HAVE_STRLCPY
|
||||
|
||||
/*
|
||||
* Copy src to string dst of size siz. At most siz-1 characters
|
||||
* will be copied. Always NUL terminates (unless siz == 0).
|
|
@ -1,9 +1,10 @@
|
|||
#ifndef _STRLCPY_H
|
||||
#define _STRLCPY_H
|
||||
#ifndef _BSD_STRLCPY_H
|
||||
#define _BSD_STRLCPY_H
|
||||
|
||||
#include "config.h"
|
||||
#ifndef HAVE_STRLCPY
|
||||
#include <sys/types.h>
|
||||
size_t strlcpy(char *dst, const char *src, size_t siz);
|
||||
#endif /* !HAVE_STRLCPY */
|
||||
|
||||
#endif /* _STRLCPY_H */
|
||||
#endif /* _BSD_STRLCPY_H */
|
12
configure.in
12
configure.in
|
@ -60,6 +60,16 @@ AC_CHECK_HEADERS(pty.h endian.h paths.h lastlog.h shadow.h netgroup.h maillock.h
|
|||
dnl Checks for library functions.
|
||||
AC_CHECK_FUNCS(openpty strlcpy mkdtemp arc4random setproctitle setlogin)
|
||||
|
||||
AC_CHECK_FUNC(login,
|
||||
[AC_DEFINE(HAVE_LOGIN)],
|
||||
[AC_CHECK_LIB(bsd, login, [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_LOGIN)])]
|
||||
)
|
||||
|
||||
AC_CHECK_FUNC(daemon,
|
||||
[AC_DEFINE(HAVE_DAEMON)],
|
||||
[AC_CHECK_LIB(bsd, daemon, [LIBS="$LIBS -lbsd"; AC_DEFINE(HAVE_DAEMON)])]
|
||||
)
|
||||
|
||||
dnl Check whether use wants to disable the external ssh-askpass
|
||||
INSTALL_ASKPASS="yes"
|
||||
AC_MSG_CHECKING([whether to enable external ssh-askpass support])
|
||||
|
@ -156,7 +166,7 @@ done
|
|||
|
||||
AC_MSG_CHECKING([whether libc defines __progname])
|
||||
AC_TRY_LINK([],
|
||||
[extern char *__progname;],
|
||||
[extern char *__progname; printf("%s", __progname);],
|
||||
[
|
||||
AC_DEFINE(HAVE___PROGNAME)
|
||||
AC_MSG_RESULT(yes)
|
||||
|
|
|
@ -67,12 +67,12 @@ static /**/const char *const rcsid[] = { (char *)rcsid, "\100(#)" msg }
|
|||
#endif
|
||||
#ifdef HAVE_LIBPAM
|
||||
# include <security/pam_appl.h>
|
||||
#endif /* HAVE_PAM */
|
||||
#endif
|
||||
|
||||
#include "version.h"
|
||||
#include "helper.h"
|
||||
#include "mktemp.h"
|
||||
#include "strlcpy.h"
|
||||
#include "bsd-strlcpy.h"
|
||||
#include "bsd-mktemp.h"
|
||||
|
||||
/* Define this to be the path of the xauth program. */
|
||||
#ifndef XAUTH_PATH
|
||||
|
|
Loading…
Reference in New Issue