Missing files from OpenSSH import
authorScott Ullrich <geekgod@dragonflybsd.org>
Sat, 31 Jul 2004 20:05:00 +0000 (20:05 +0000)
committerScott Ullrich <geekgod@dragonflybsd.org>
Sat, 31 Jul 2004 20:05:00 +0000 (20:05 +0000)
29 files changed:
secure/lib/libssh/config.h [new file with mode: 0644]
secure/lib/libssh/log.c.patch [new file with mode: 0644]
secure/lib/libssh/porting/README [new file with mode: 0644]
secure/lib/libssh/porting/acconfig.h.patch [new file with mode: 0644]
secure/lib/libssh/porting/configure.ac.patch [new file with mode: 0644]
secure/lib/libssh/version.c [new file with mode: 0644]
secure/lib/libssh/version.h [new file with mode: 0644]
secure/usr.bin/ssh-agent/ssh-agent.c.patch [new file with mode: 0644]
secure/usr.bin/ssh/readconf.c.patch [new file with mode: 0644]
secure/usr.bin/ssh/ssh.1.no_obj.patch [new file with mode: 0644]
secure/usr.bin/ssh/ssh.c.patch [new file with mode: 0644]
secure/usr.bin/ssh/ssh_config.5.no_obj.patch [new file with mode: 0644]
secure/usr.bin/ssh/ssh_config.no_obj.patch [new file with mode: 0644]
secure/usr.sbin/sshd/auth-passwd-freebsd.c [new file with mode: 0644]
secure/usr.sbin/sshd/auth-skey.c.patch [new file with mode: 0644]
secure/usr.sbin/sshd/auth.c.patch [new file with mode: 0644]
secure/usr.sbin/sshd/auth.h.patch [new file with mode: 0644]
secure/usr.sbin/sshd/auth2-pam-freebsd.c [new file with mode: 0644]
secure/usr.sbin/sshd/auth2.c.patch [new file with mode: 0644]
secure/usr.sbin/sshd/loginrec.c.patch [new file with mode: 0644]
secure/usr.sbin/sshd/monitor.c.patch [new file with mode: 0644]
secure/usr.sbin/sshd/monitor_wrap.c.patch [new file with mode: 0644]
secure/usr.sbin/sshd/myproposal.h.patch [new file with mode: 0644]
secure/usr.sbin/sshd/servconf.c.patch [new file with mode: 0644]
secure/usr.sbin/sshd/session.c.patch [new file with mode: 0644]
secure/usr.sbin/sshd/sshd.8.no_obj.patch [new file with mode: 0644]
secure/usr.sbin/sshd/sshd.c.patch [new file with mode: 0644]
secure/usr.sbin/sshd/sshd_config.5.no_obj.patch [new file with mode: 0644]
secure/usr.sbin/sshd/sshd_config.no_obj.patch [new file with mode: 0644]

diff --git a/secure/lib/libssh/config.h b/secure/lib/libssh/config.h
new file mode 100644 (file)
index 0000000..c540f51
--- /dev/null
@@ -0,0 +1,1078 @@
+/* config.h.  Generated by configure.  */
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+/* $Id: acconfig.h,v 1.177 2004/04/15 23:22:40 dtucker Exp $ */
+/* $DragonFly: src/secure/lib/libssh/config.h,v 1.1 2004/07/31 20:05:00 geekgod Exp $ */
+/*
+ * Copyright (c) 1999-2003 Damien Miller.  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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+ */
+
+#ifndef _CONFIG_H
+#define _CONFIG_H
+
+/* Generated automatically from acconfig.h by autoheader. */
+/* Please make your changes there */
+
+
+/* Define if your platform breaks doing a seteuid before a setuid */
+/* #undef SETEUID_BREAKS_SETUID */
+
+/* Define if your setreuid() is broken */
+/* #undef BROKEN_SETREUID */
+
+/* Define if your setregid() is broken */
+/* #undef BROKEN_SETREGID */
+
+/* Define if your setresuid() is broken */
+/* #undef BROKEN_SETRESUID */
+
+/* Define if your setresgid() is broken */
+/* #undef BROKEN_SETRESGID */
+
+/* Define to a Set Process Title type if your system is */
+/* supported by bsd-setproctitle.c */
+/* #undef SPT_TYPE */
+/* #undef SPT_PADCHAR */
+
+/* setgroups() NOOP allowed */
+/* #undef SETGROUPS_NOOP */
+
+/* SCO workaround */
+/* #undef BROKEN_SYS_TERMIO_H */
+
+/* Define if you have SecureWare-based protected password database */
+/* #undef HAVE_SECUREWARE */
+
+/* If your header files don't define LOGIN_PROGRAM, then use this (detected) */
+/* from environment and PATH */
+#define LOGIN_PROGRAM_FALLBACK "/usr/bin/login"
+
+/* Full path of your "passwd" program */
+#define _PATH_PASSWD_PROG "/usr/bin/passwd"
+
+/* Define if your password has a pw_class field */
+#define HAVE_PW_CLASS_IN_PASSWD 1
+
+/* Define if your password has a pw_expire field */
+#define HAVE_PW_EXPIRE_IN_PASSWD 1
+
+/* Define if your password has a pw_change field */
+#define HAVE_PW_CHANGE_IN_PASSWD 1
+
+/* Define if your system uses access rights style file descriptor passing */
+/* #undef HAVE_ACCRIGHTS_IN_MSGHDR */
+
+/* Define if your system uses ancillary data style file descriptor passing */
+#define HAVE_CONTROL_IN_MSGHDR 1
+
+/* Define if you system's inet_ntoa is busted (e.g. Irix gcc issue) */
+/* #undef BROKEN_INET_NTOA */
+
+/* Define if your system defines sys_errlist[] */
+#define HAVE_SYS_ERRLIST 1
+
+/* Define if your system defines sys_nerr */
+#define HAVE_SYS_NERR 1
+
+/* Define if your system choked on IP TOS setting */
+/* #undef IP_TOS_IS_BROKEN */
+
+/* Define if you have the getuserattr function.  */
+/* #undef HAVE_GETUSERATTR */
+
+/* Define if you have the basename function. */
+#define HAVE_BASENAME 1
+
+/* Work around problematic Linux PAM modules handling of PAM_TTY */
+/* #undef PAM_TTY_KLUDGE */
+
+/* Use PIPES instead of a socketpair() */
+/* #undef USE_PIPES */
+
+/* Define if your snprintf is busted */
+/* #undef BROKEN_SNPRINTF */
+
+/* Define if you are on Cygwin */
+/* #undef HAVE_CYGWIN */
+
+/* Define if you have a broken realpath. */
+/* #undef BROKEN_REALPATH */
+
+/* Define if you are on NeXT */
+/* #undef HAVE_NEXT */
+
+/* Define if you are on NEWS-OS */
+/* #undef HAVE_NEWS4 */
+
+/* Define if you want to enable PAM support */
+#define USE_PAM 1
+
+/* Define if you want to enable AIX4's authenticate function */
+/* #undef WITH_AIXAUTHENTICATE */
+
+/* Define if your AIX loginfailed() function takes 4 arguments (AIX >= 5.2) */
+/* #undef AIX_LOGINFAILED_4ARG */
+
+/* Define if your skeychallenge() function takes 4 arguments (eg NetBSD) */
+/* #undef SKEYCHALLENGE_4ARG */
+
+/* Define if you have/want arrays (cluster-wide session managment, not C arrays) */
+/* #undef WITH_IRIX_ARRAY */
+
+/* Define if you want IRIX project management */
+/* #undef WITH_IRIX_PROJECT */
+
+/* Define if you want IRIX audit trails */
+/* #undef WITH_IRIX_AUDIT */
+
+/* Define if you want IRIX kernel jobs */
+/* #undef WITH_IRIX_JOBS */
+
+/* Location of PRNGD/EGD random number socket */
+/* #undef PRNGD_SOCKET */
+
+/* Port number of PRNGD/EGD random number socket */
+/* #undef PRNGD_PORT */
+
+/* Builtin PRNG command timeout */
+#define ENTROPY_TIMEOUT_MSEC 200
+
+/* non-privileged user for privilege separation */
+#define SSH_PRIVSEP_USER "sshd"
+
+/* Define if you want to install preformatted manpages.*/
+/* #undef MANTYPE */
+
+/* Define if your ssl headers are included with #include <openssl/header.h>  */
+#define HAVE_OPENSSL 1
+
+/* Define if you are linking against RSAref.  Used only to print the right
+ * message at run-time. */
+/* #undef RSAREF */
+
+/* struct timeval */
+#define HAVE_STRUCT_TIMEVAL 1
+
+/* struct utmp and struct utmpx fields */
+#define HAVE_HOST_IN_UTMP 1
+/* #undef HAVE_HOST_IN_UTMPX */
+/* #undef HAVE_ADDR_IN_UTMP */
+/* #undef HAVE_ADDR_IN_UTMPX */
+/* #undef HAVE_ADDR_V6_IN_UTMP */
+/* #undef HAVE_ADDR_V6_IN_UTMPX */
+/* #undef HAVE_SYSLEN_IN_UTMPX */
+/* #undef HAVE_PID_IN_UTMP */
+/* #undef HAVE_TYPE_IN_UTMP */
+/* #undef HAVE_TYPE_IN_UTMPX */
+/* #undef HAVE_TV_IN_UTMP */
+/* #undef HAVE_TV_IN_UTMPX */
+/* #undef HAVE_ID_IN_UTMP */
+/* #undef HAVE_ID_IN_UTMPX */
+/* #undef HAVE_EXIT_IN_UTMP */
+#define HAVE_TIME_IN_UTMP 1
+/* #undef HAVE_TIME_IN_UTMPX */
+
+/* Define if you don't want to use your system's login() call */
+/* #undef DISABLE_LOGIN */
+
+/* Define if you don't want to use pututline() etc. to write [uw]tmp */
+/* #undef DISABLE_PUTUTLINE */
+
+/* Define if you don't want to use pututxline() etc. to write [uw]tmpx */
+/* #undef DISABLE_PUTUTXLINE */
+
+/* Define if you don't want to use lastlog */
+/* #undef DISABLE_LASTLOG */
+
+/* Define if you don't want to use lastlog in session.c */
+/* #undef NO_SSH_LASTLOG */
+
+/* Define if have krb5_init_ets */
+/* #undef KRB5_INIT_ETS */
+
+/* Define if you don't want to use utmp */
+/* #undef DISABLE_UTMP */
+
+/* Define if you don't want to use utmpx */
+#define DISABLE_UTMPX 1
+
+/* Define if you don't want to use wtmp */
+/* #undef DISABLE_WTMP */
+
+/* Define if you don't want to use wtmpx */
+#define DISABLE_WTMPX 1
+
+/* Some systems need a utmpx entry for /bin/login to work */
+/* #undef LOGIN_NEEDS_UTMPX */
+
+/* Some versions of /bin/login need the TERM supplied on the commandline */
+/* #undef LOGIN_NEEDS_TERM */
+
+/* Define if your login program cannot handle end of options ("--") */
+/* #undef LOGIN_NO_ENDOPT */
+
+/* Define if you want to specify the path to your lastlog file */
+/* #undef CONF_LASTLOG_FILE */
+
+/* Define if you want to specify the path to your utmp file */
+#define CONF_UTMP_FILE "/var/run/utmp"
+
+/* Define if you want to specify the path to your wtmp file */
+#define CONF_WTMP_FILE "/var/log/wtmp"
+
+/* Define if you want to specify the path to your utmpx file */
+/* #undef CONF_UTMPX_FILE */
+
+/* Define if you want to specify the path to your wtmpx file */
+/* #undef CONF_WTMPX_FILE */
+
+/* Define if you want external askpass support */
+/* #undef USE_EXTERNAL_ASKPASS */
+
+/* Define if libc defines __progname */
+#define HAVE___PROGNAME 1
+
+/* Define if compiler implements __FUNCTION__ */
+#define HAVE___FUNCTION__ 1
+
+/* Define if compiler implements __func__ */
+#define HAVE___func__ 1
+
+/* Define this is you want GSSAPI support in the version 2 protocol */
+/* #undef GSSAPI */
+
+/* Define if you want Kerberos 5 support */
+/* #undef KRB5 */
+
+/* Define this if you are using the Heimdal version of Kerberos V5 */
+/* #undef HEIMDAL */
+
+/* Define this if you want to use libkafs' AFS support */
+/* #undef USE_AFS */
+
+/* Define if you want S/Key support */
+/* #undef SKEY */
+
+/* Define if you want OPIE support */
+/* #undef OPIE */
+
+/* Define if you want TCP Wrappers support */
+#define LIBWRAP 1
+
+/* Define if your libraries define login() */
+#define HAVE_LOGIN 1
+
+/* Define if your libraries define daemon() */
+#define HAVE_DAEMON 1
+
+/* Define if your libraries define getpagesize() */
+#define HAVE_GETPAGESIZE 1
+
+/* Define if xauth is found in your path */
+/* #undef XAUTH_PATH */
+
+/* Define if you want to allow MD5 passwords */
+/* #undef HAVE_MD5_PASSWORDS */
+
+/* Define if you want to disable shadow passwords */
+/* #undef DISABLE_SHADOW */
+
+/* Define if you want to use shadow password expire field */
+/* #undef HAS_SHADOW_EXPIRE */
+
+/* Define if you have Digital Unix Security Integration Architecture */
+/* #undef HAVE_OSF_SIA */
+
+/* Define if you have getpwanam(3) [SunOS 4.x] */
+/* #undef HAVE_GETPWANAM */
+
+/* Define if you have an old version of PAM which takes only one argument */
+/* to pam_strerror */
+/* #undef HAVE_OLD_PAM */
+
+/* Define if you are using Solaris-derived PAM which passes pam_messages  */
+/* to the conversation function with an extra level of indirection */
+/* #undef PAM_SUN_CODEBASE */
+
+/* Set this to your mail directory if you don't have maillock.h */
+#define MAIL_DIRECTORY "/var/mail"
+
+/* Data types */
+#define HAVE_U_INT 1
+#define HAVE_INTXX_T 1
+#define HAVE_U_INTXX_T 1
+#define HAVE_UINTXX_T 1
+#define HAVE_INT64_T 1
+#define HAVE_U_INT64_T 1
+#define HAVE_U_CHAR 1
+#define HAVE_SIZE_T 1
+#define HAVE_SSIZE_T 1
+#define HAVE_CLOCK_T 1
+#define HAVE_MODE_T 1
+#define HAVE_PID_T 1
+#define HAVE_SA_FAMILY_T 1
+#define HAVE_STRUCT_SOCKADDR_STORAGE 1
+#define HAVE_STRUCT_ADDRINFO 1
+#define HAVE_STRUCT_IN6_ADDR 1
+#define HAVE_STRUCT_SOCKADDR_IN6 1
+
+/* Fields in struct sockaddr_storage */
+#define HAVE_SS_FAMILY_IN_SS 1
+/* #undef HAVE___SS_FAMILY_IN_SS */
+
+/* Define if you have /dev/ptmx */
+/* #undef HAVE_DEV_PTMX */
+
+/* Define if you have /dev/ptc */
+/* #undef HAVE_DEV_PTS_AND_PTC */
+
+/* Define if you need to use IP address instead of hostname in $DISPLAY */
+/* #undef IPADDR_IN_DISPLAY */
+
+/* Specify default $PATH */
+/* #undef USER_PATH */
+
+/* Specify location of ssh.pid */
+#define _PATH_SSH_PIDDIR "/var/run"
+
+/* getaddrinfo is broken (if present) */
+/* #undef BROKEN_GETADDRINFO */
+
+/* updwtmpx is broken (if present) */
+/* #undef BROKEN_UPDWTMPX */
+
+/* Workaround more Linux IPv6 quirks */
+/* #undef DONT_TRY_OTHER_AF */
+
+/* Detect IPv4 in IPv6 mapped addresses and treat as IPv4 */
+/* #undef IPV4_IN_IPV6 */
+
+/* Define if you have BSD auth support */
+/* #undef BSD_AUTH */
+
+/* Define if X11 doesn't support AF_UNIX sockets on that system */
+/* #undef NO_X11_UNIX_SOCKETS */
+
+/* Define if the concept of ports only accessible to superusers isn't known */
+/* #undef NO_IPPORT_RESERVED_CONCEPT */
+
+/* Needed for SCO and NeXT */
+/* #undef BROKEN_SAVED_UIDS */
+
+/* Define if your system glob() function has the GLOB_ALTDIRFUNC extension */
+#define GLOB_HAS_ALTDIRFUNC 1
+
+/* Define if your system glob() function has gl_matchc options in glob_t */
+/* #undef GLOB_HAS_GL_MATCHC */
+
+/* Define in your struct dirent expects you to allocate extra space for d_name */
+/* #undef BROKEN_ONE_BYTE_DIRENT_D_NAME */
+
+/* Define if your system has /etc/default/login */
+/* #undef HAVE_ETC_DEFAULT_LOGIN */
+
+/* Define if your getopt(3) defines and uses optreset */
+#define HAVE_GETOPT_OPTRESET 1
+
+/* Define on *nto-qnx systems */
+/* #undef MISSING_NFDBITS */
+
+/* Define on *nto-qnx systems */
+/* #undef MISSING_HOWMANY */
+
+/* Define on *nto-qnx systems */
+/* #undef MISSING_FD_MASK */
+
+/* Define if you want smartcard support */
+/* #undef SMARTCARD */
+
+/* Define if you want smartcard support using sectok */
+/* #undef USE_SECTOK */
+
+/* Define if you want smartcard support using OpenSC */
+/* #undef USE_OPENSC */
+
+/* Define if you want to use OpenSSL's internally seeded PRNG only */
+#define OPENSSL_PRNG_ONLY 1
+
+/* Define if you shouldn't strip 'tty' from your ttyname in [uw]tmp */
+/* #undef WITH_ABBREV_NO_TTY */
+
+/* Define if you want a different $PATH for the superuser */
+/* #undef SUPERUSER_PATH */
+
+/* Path that unprivileged child will chroot() to in privep mode */
+/* #undef PRIVSEP_PATH */
+
+/* Define if your platform needs to skip post auth file descriptor passing */
+/* #undef DISABLE_FD_PASSING */
+
+/* Silly mkstemp() */
+/* #undef HAVE_STRICT_MKSTEMP */
+
+/* Some systems put this outside of libc */
+#define HAVE_NANOSLEEP 1
+
+/* Define if sshd somehow reacquires a controlling TTY after setsid() */
+/* #undef SSHD_ACQUIRES_CTTY */
+
+/* Define if cmsg_type is not passed correctly */
+/* #undef BROKEN_CMSG_TYPE */
+
+/* Strings used in /etc/passwd to denote locked account */
+/* #undef LOCKED_PASSWD_STRING */
+/* #undef LOCKED_PASSWD_PREFIX */
+/* #undef LOCKED_PASSWD_SUBSTR */
+
+/* Define if getrrsetbyname() exists */
+/* #undef HAVE_GETRRSETBYNAME */
+
+/* Define if HEADER.ad exists in arpa/nameser.h */
+#define HAVE_HEADER_AD 1
+
+/* Define if your resolver libs need this for getrrsetbyname */
+/* #undef BIND_8_COMPAT */
+
+
+/* Define to 1 if the `getpgrp' function requires zero arguments. */
+#define GETPGRP_VOID 1
+
+/* Define to 1 if you have the `arc4random' function. */
+#define HAVE_ARC4RANDOM 1
+
+/* Define to 1 if you have the `b64_ntop' function. */
+/* #undef HAVE_B64_NTOP */
+
+/* Define to 1 if you have the `b64_pton' function. */
+/* #undef HAVE_B64_PTON */
+
+/* Define to 1 if you have the `bcopy' function. */
+#define HAVE_BCOPY 1
+
+/* Define to 1 if you have the `bindresvport_sa' function. */
+#define HAVE_BINDRESVPORT_SA 1
+
+/* Define to 1 if you have the <bstring.h> header file. */
+/* #undef HAVE_BSTRING_H */
+
+/* Define to 1 if you have the `clock' function. */
+#define HAVE_CLOCK 1
+
+/* Define if gai_strerror() returns const char * */
+/* #undef HAVE_CONST_GAI_STRERROR_PROTO */
+
+/* Define to 1 if you have the <crypt.h> header file. */
+/* #undef HAVE_CRYPT_H */
+
+/* Define to 1 if you have the `dirname' function. */
+#define HAVE_DIRNAME 1
+
+/* Define to 1 if you have the <endian.h> header file. */
+/* #undef HAVE_ENDIAN_H */
+
+/* Define to 1 if you have the `endutent' function. */
+/* #undef HAVE_ENDUTENT */
+
+/* Define to 1 if you have the `endutxent' function. */
+/* #undef HAVE_ENDUTXENT */
+
+/* Define to 1 if you have the `fchmod' function. */
+#define HAVE_FCHMOD 1
+
+/* Define to 1 if you have the `fchown' function. */
+#define HAVE_FCHOWN 1
+
+/* Define to 1 if you have the <features.h> header file. */
+/* #undef HAVE_FEATURES_H */
+
+/* Define to 1 if you have the <floatingpoint.h> header file. */
+#define HAVE_FLOATINGPOINT_H 1
+
+/* Define to 1 if you have the `freeaddrinfo' function. */
+#define HAVE_FREEADDRINFO 1
+
+/* Define to 1 if you have the `futimes' function. */
+#define HAVE_FUTIMES 1
+
+/* Define to 1 if you have the `gai_strerror' function. */
+#define HAVE_GAI_STRERROR 1
+
+/* Define to 1 if you have the `getaddrinfo' function. */
+#define HAVE_GETADDRINFO 1
+
+/* Define to 1 if you have the `getcwd' function. */
+#define HAVE_GETCWD 1
+
+/* Define to 1 if you have the `getgrouplist' function. */
+#define HAVE_GETGROUPLIST 1
+
+/* Define to 1 if you have the `getluid' function. */
+/* #undef HAVE_GETLUID */
+
+/* Define to 1 if you have the `getnameinfo' function. */
+#define HAVE_GETNAMEINFO 1
+
+/* Define to 1 if you have the `getopt' function. */
+#define HAVE_GETOPT 1
+
+/* Define to 1 if you have the <getopt.h> header file. */
+#define HAVE_GETOPT_H 1
+
+/* Define to 1 if you have the `getpeereid' function. */
+#define HAVE_GETPEEREID 1
+
+/* Define to 1 if you have the `getpwanam' function. */
+/* #undef HAVE_GETPWANAM */
+
+/* Define to 1 if you have the `getrlimit' function. */
+#define HAVE_GETRLIMIT 1
+
+/* Define to 1 if you have the `getrusage' function. */
+#define HAVE_GETRUSAGE 1
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define to 1 if you have the `getttyent' function. */
+#define HAVE_GETTTYENT 1
+
+/* Define to 1 if you have the `getutent' function. */
+/* #undef HAVE_GETUTENT */
+
+/* Define to 1 if you have the `getutid' function. */
+/* #undef HAVE_GETUTID */
+
+/* Define to 1 if you have the `getutline' function. */
+/* #undef HAVE_GETUTLINE */
+
+/* Define to 1 if you have the `getutxent' function. */
+/* #undef HAVE_GETUTXENT */
+
+/* Define to 1 if you have the `getutxid' function. */
+/* #undef HAVE_GETUTXID */
+
+/* Define to 1 if you have the `getutxline' function. */
+/* #undef HAVE_GETUTXLINE */
+
+/* Define to 1 if you have the `glob' function. */
+#define HAVE_GLOB 1
+
+/* Define to 1 if you have the <glob.h> header file. */
+#define HAVE_GLOB_H 1
+
+/* Define to 1 if you have the <gssapi_generic.h> header file. */
+/* #undef HAVE_GSSAPI_GENERIC_H */
+
+/* Define to 1 if you have the <gssapi/gssapi_generic.h> header file. */
+/* #undef HAVE_GSSAPI_GSSAPI_GENERIC_H */
+
+/* Define to 1 if you have the <gssapi/gssapi.h> header file. */
+/* #undef HAVE_GSSAPI_GSSAPI_H */
+
+/* Define to 1 if you have the <gssapi/gssapi_krb5.h> header file. */
+/* #undef HAVE_GSSAPI_GSSAPI_KRB5_H */
+
+/* Define to 1 if you have the <gssapi.h> header file. */
+/* #undef HAVE_GSSAPI_H */
+
+/* Define to 1 if you have the <gssapi_krb5.h> header file. */
+/* #undef HAVE_GSSAPI_KRB5_H */
+
+/* Define to 1 if you have the <ia.h> header file. */
+/* #undef HAVE_IA_H */
+
+/* Define to 1 if you have the `inet_aton' function. */
+#define HAVE_INET_ATON 1
+
+/* Define to 1 if you have the `inet_ntoa' function. */
+#define HAVE_INET_NTOA 1
+
+/* Define to 1 if you have the `inet_ntop' function. */
+#define HAVE_INET_NTOP 1
+
+/* Define to 1 if you have the `innetgr' function. */
+#define HAVE_INNETGR 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the <lastlog.h> header file. */
+/* #undef HAVE_LASTLOG_H */
+
+/* Define to 1 if you have the `crypt' library (-lcrypt). */
+/* #undef HAVE_LIBCRYPT */
+
+/* Define to 1 if you have the `dl' library (-ldl). */
+/* #undef HAVE_LIBDL */
+
+/* Define to 1 if you have the <libgen.h> header file. */
+#define HAVE_LIBGEN_H 1
+
+/* Define to 1 if you have the `nsl' library (-lnsl). */
+/* #undef HAVE_LIBNSL */
+
+/* Define to 1 if you have the `pam' library (-lpam). */
+#define HAVE_LIBPAM 1
+
+/* Define to 1 if you have the `sectok' library (-lsectok). */
+/* #undef HAVE_LIBSECTOK */
+
+/* Define to 1 if you have the `socket' library (-lsocket). */
+/* #undef HAVE_LIBSOCKET */
+
+/* Define to 1 if you have the <libutil.h> header file. */
+#define HAVE_LIBUTIL_H 1
+
+/* Define to 1 if you have the `xnet' library (-lxnet). */
+/* #undef HAVE_LIBXNET */
+
+/* Define to 1 if you have the `z' library (-lz). */
+#define HAVE_LIBZ 1
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define to 1 if you have the <login_cap.h> header file. */
+#define HAVE_LOGIN_CAP_H 1
+
+/* Define to 1 if you have the `login_getcapbool' function. */
+#define HAVE_LOGIN_GETCAPBOOL 1
+
+/* Define to 1 if you have the <login.h> header file. */
+/* #undef HAVE_LOGIN_H */
+
+/* Define to 1 if you have the `logout' function. */
+#define HAVE_LOGOUT 1
+
+/* Define to 1 if you have the `logwtmp' function. */
+#define HAVE_LOGWTMP 1
+
+/* Define to 1 if you have the <maillock.h> header file. */
+/* #undef HAVE_MAILLOCK_H */
+
+/* Define to 1 if you have the `md5_crypt' function. */
+/* #undef HAVE_MD5_CRYPT */
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mkdtemp' function. */
+#define HAVE_MKDTEMP 1
+
+/* Define to 1 if you have the `mmap' function. */
+#define HAVE_MMAP 1
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netgroup.h> header file. */
+/* #undef HAVE_NETGROUP_H */
+
+/* Define to 1 if you have the <netinet/in_systm.h> header file. */
+#define HAVE_NETINET_IN_SYSTM_H 1
+
+/* Define to 1 if you have the `ngetaddrinfo' function. */
+/* #undef HAVE_NGETADDRINFO */
+
+/* Define to 1 if you have the `nsleep' function. */
+/* #undef HAVE_NSLEEP */
+
+/* Define to 1 if you have the `ogetaddrinfo' function. */
+/* #undef HAVE_OGETADDRINFO */
+
+/* Define to 1 if you have the `openlog_r' function. */
+/* #undef HAVE_OPENLOG_R */
+
+/* Define to 1 if you have the `openpty' function. */
+#define HAVE_OPENPTY 1
+
+/* Define to 1 if you have the `pam_getenvlist' function. */
+#define HAVE_PAM_GETENVLIST 1
+
+/* Define to 1 if you have the <pam/pam_appl.h> header file. */
+/* #undef HAVE_PAM_PAM_APPL_H */
+
+/* Define to 1 if you have the `pam_putenv' function. */
+#define HAVE_PAM_PUTENV 1
+
+/* Define to 1 if you have the <paths.h> header file. */
+#define HAVE_PATHS_H 1
+
+/* Define to 1 if you have the `prctl' function. */
+/* #undef HAVE_PRCTL */
+
+/* Define to 1 if you have the `pstat' function. */
+/* #undef HAVE_PSTAT */
+
+/* Define to 1 if you have the <pty.h> header file. */
+/* #undef HAVE_PTY_H */
+
+/* Define to 1 if you have the `pututline' function. */
+/* #undef HAVE_PUTUTLINE */
+
+/* Define to 1 if you have the `pututxline' function. */
+/* #undef HAVE_PUTUTXLINE */
+
+/* Define to 1 if you have the `readpassphrase' function. */
+#define HAVE_READPASSPHRASE 1
+
+/* Define to 1 if you have the <readpassphrase.h> header file. */
+#define HAVE_READPASSPHRASE_H 1
+
+/* Define to 1 if you have the `realpath' function. */
+#define HAVE_REALPATH 1
+
+/* Define to 1 if you have the `recvmsg' function. */
+#define HAVE_RECVMSG 1
+
+/* Define to 1 if you have the <rpc/types.h> header file. */
+#define HAVE_RPC_TYPES_H 1
+
+/* Define to 1 if you have the `rresvport_af' function. */
+#define HAVE_RRESVPORT_AF 1
+
+/* Define to 1 if you have the <sectok.h> header file. */
+/* #undef HAVE_SECTOK_H */
+
+/* Define to 1 if you have the <security/pam_appl.h> header file. */
+#define HAVE_SECURITY_PAM_APPL_H 1
+
+/* Define to 1 if you have the `sendmsg' function. */
+#define HAVE_SENDMSG 1
+
+/* Define to 1 if you have the `setauthdb' function. */
+/* #undef HAVE_SETAUTHDB */
+
+/* Define to 1 if you have the `setdtablesize' function. */
+/* #undef HAVE_SETDTABLESIZE */
+
+/* Define to 1 if you have the `setegid' function. */
+#define HAVE_SETEGID 1
+
+/* Define to 1 if you have the `setenv' function. */
+#define HAVE_SETENV 1
+
+/* Define to 1 if you have the `seteuid' function. */
+#define HAVE_SETEUID 1
+
+/* Define to 1 if you have the `setgroups' function. */
+#define HAVE_SETGROUPS 1
+
+/* Define to 1 if you have the `setlogin' function. */
+#define HAVE_SETLOGIN 1
+
+/* Define to 1 if you have the `setluid' function. */
+/* #undef HAVE_SETLUID */
+
+/* Define to 1 if you have the `setpcred' function. */
+/* #undef HAVE_SETPCRED */
+
+/* Define to 1 if you have the `setproctitle' function. */
+#define HAVE_SETPROCTITLE 1
+
+/* Define to 1 if you have the `setregid' function. */
+#define HAVE_SETREGID 1
+
+/* Define to 1 if you have the `setresgid' function. */
+#define HAVE_SETRESGID 1
+
+/* Define to 1 if you have the `setresuid' function. */
+#define HAVE_SETRESUID 1
+
+/* Define to 1 if you have the `setreuid' function. */
+#define HAVE_SETREUID 1
+
+/* Define to 1 if you have the `setrlimit' function. */
+#define HAVE_SETRLIMIT 1
+
+/* Define to 1 if you have the `setsid' function. */
+#define HAVE_SETSID 1
+
+/* Define to 1 if you have the `setutent' function. */
+/* #undef HAVE_SETUTENT */
+
+/* Define to 1 if you have the `setutxent' function. */
+/* #undef HAVE_SETUTXENT */
+
+/* Define to 1 if you have the `setvbuf' function. */
+#define HAVE_SETVBUF 1
+
+/* Define to 1 if you have the <shadow.h> header file. */
+/* #undef HAVE_SHADOW_H */
+
+/* Define to 1 if you have the `sigaction' function. */
+#define HAVE_SIGACTION 1
+
+/* Define to 1 if you have the `sigvec' function. */
+#define HAVE_SIGVEC 1
+
+/* Define to 1 if the system has the type `sig_atomic_t'. */
+#define HAVE_SIG_ATOMIC_T 1
+
+/* Define to 1 if you have the `snprintf' function. */
+#define HAVE_SNPRINTF 1
+
+/* Define to 1 if you have the `socketpair' function. */
+#define HAVE_SOCKETPAIR 1
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#define HAVE_STDDEF_H 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the `strftime' function. */
+#define HAVE_STRFTIME 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strlcat' function. */
+#define HAVE_STRLCAT 1
+
+/* Define to 1 if you have the `strlcpy' function. */
+#define HAVE_STRLCPY 1
+
+/* Define to 1 if you have the `strmode' function. */
+#define HAVE_STRMODE 1
+
+/* Define to 1 if you have the `strnvis' function. */
+/* #undef HAVE_STRNVIS */
+
+/* Define to 1 if you have the `strsep' function. */
+#define HAVE_STRSEP 1
+
+/* Define to 1 if you have the `strtoul' function. */
+#define HAVE_STRTOUL 1
+
+/* Define to 1 if `st_blksize' is member of `struct stat'. */
+#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
+
+/* Define to 1 if the system has the type `struct timespec'. */
+#define HAVE_STRUCT_TIMESPEC 1
+
+/* Define to 1 if you have the `sysconf' function. */
+#define HAVE_SYSCONF 1
+
+/* Define to 1 if you have the <sys/audit.h> header file. */
+/* #undef HAVE_SYS_AUDIT_H */
+
+/* Define to 1 if you have the <sys/bitypes.h> header file. */
+/* #undef HAVE_SYS_BITYPES_H */
+
+/* Define to 1 if you have the <sys/bsdtty.h> header file. */
+/* #undef HAVE_SYS_BSDTTY_H */
+
+/* Define to 1 if you have the <sys/cdefs.h> header file. */
+#define HAVE_SYS_CDEFS_H 1
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the <sys/prctl.h> header file. */
+/* #undef HAVE_SYS_PRCTL_H */
+
+/* Define to 1 if you have the <sys/pstat.h> header file. */
+/* #undef HAVE_SYS_PSTAT_H */
+
+/* Define to 1 if you have the <sys/ptms.h> header file. */
+/* #undef HAVE_SYS_PTMS_H */
+
+/* Define to 1 if you have the <sys/select.h> header file. */
+#define HAVE_SYS_SELECT_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/stream.h> header file. */
+/* #undef HAVE_SYS_STREAM_H */
+
+/* Define to 1 if you have the <sys/stropts.h> header file. */
+/* #undef HAVE_SYS_STROPTS_H */
+
+/* Define to 1 if you have the <sys/strtio.h> header file. */
+/* #undef HAVE_SYS_STRTIO_H */
+
+/* Define to 1 if you have the <sys/sysmacros.h> header file. */
+/* #undef HAVE_SYS_SYSMACROS_H */
+
+/* Define to 1 if you have the <sys/timers.h> header file. */
+#define HAVE_SYS_TIMERS_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/un.h> header file. */
+#define HAVE_SYS_UN_H 1
+
+/* Define to 1 if you have the `tcgetpgrp' function. */
+#define HAVE_TCGETPGRP 1
+
+/* Define to 1 if you have the `tcsendbreak' function. */
+#define HAVE_TCSENDBREAK 1
+
+/* Define to 1 if you have the `time' function. */
+#define HAVE_TIME 1
+
+/* Define to 1 if you have the <time.h> header file. */
+#define HAVE_TIME_H 1
+
+/* Define to 1 if you have the <tmpdir.h> header file. */
+/* #undef HAVE_TMPDIR_H */
+
+/* Define to 1 if you have the `truncate' function. */
+#define HAVE_TRUNCATE 1
+
+/* Define to 1 if you have the <ttyent.h> header file. */
+#define HAVE_TTYENT_H 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the `unsetenv' function. */
+#define HAVE_UNSETENV 1
+
+/* Define to 1 if you have the `updwtmp' function. */
+/* #undef HAVE_UPDWTMP */
+
+/* Define to 1 if you have the `updwtmpx' function. */
+/* #undef HAVE_UPDWTMPX */
+
+/* Define to 1 if you have the <usersec.h> header file. */
+/* #undef HAVE_USERSEC_H */
+
+/* Define to 1 if you have the <util.h> header file. */
+/* #undef HAVE_UTIL_H */
+
+/* Define to 1 if you have the `utimes' function. */
+#define HAVE_UTIMES 1
+
+/* Define to 1 if you have the <utime.h> header file. */
+#define HAVE_UTIME_H 1
+
+/* Define to 1 if you have the `utmpname' function. */
+/* #undef HAVE_UTMPNAME */
+
+/* Define to 1 if you have the `utmpxname' function. */
+/* #undef HAVE_UTMPXNAME */
+
+/* Define to 1 if you have the <utmpx.h> header file. */
+/* #undef HAVE_UTMPX_H */
+
+/* Define to 1 if you have the <utmp.h> header file. */
+#define HAVE_UTMP_H 1
+
+/* Define to 1 if you have the `vhangup' function. */
+/* #undef HAVE_VHANGUP */
+
+/* Define to 1 if you have the <vis.h> header file. */
+/* #undef HAVE_VIS_H */
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#define HAVE_VSNPRINTF 1
+
+/* Define to 1 if you have the `waitpid' function. */
+#define HAVE_WAITPID 1
+
+/* Define to 1 if you have the `_getlong' function. */
+#define HAVE__GETLONG 1
+
+/* Define to 1 if you have the `_getpty' function. */
+/* #undef HAVE__GETPTY */
+
+/* Define to 1 if you have the `_getshort' function. */
+#define HAVE__GETSHORT 1
+
+/* Define to 1 if you have the `__b64_ntop' function. */
+#define HAVE___B64_NTOP 1
+
+/* Define to 1 if you have the `__b64_pton' function. */
+#define HAVE___B64_PTON 1
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME ""
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING ""
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION ""
+
+/* The size of a `char', as computed by sizeof. */
+#define SIZEOF_CHAR 1
+
+/* The size of a `int', as computed by sizeof. */
+#define SIZEOF_INT 4
+
+/* The size of a `long int', as computed by sizeof. */
+#define SIZEOF_LONG_INT 4
+
+/* The size of a `long long int', as computed by sizeof. */
+#define SIZEOF_LONG_LONG_INT 8
+
+/* The size of a `short int', as computed by sizeof. */
+#define SIZEOF_SHORT_INT 2
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if your processor stores words with the most significant byte
+   first (like Motorola and SPARC, unlike Intel and VAX). */
+/* #undef WORDS_BIGENDIAN */
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+/* #undef _FILE_OFFSET_BITS */
+
+/* Define for large files, on AIX-style hosts. */
+/* #undef _LARGE_FILES */
+
+/* Define as `__inline' if that's what the C compiler calls it, or to nothing
+   if it is not supported. */
+/* #undef inline */
+
+/* type to use in place of socklen_t if not defined */
+/* #undef socklen_t */
+
+/* ******************* Shouldn't need to edit below this line ************** */
+
+#endif /* _CONFIG_H */
diff --git a/secure/lib/libssh/log.c.patch b/secure/lib/libssh/log.c.patch
new file mode 100644 (file)
index 0000000..53dfb86
--- /dev/null
@@ -0,0 +1,12 @@
+$DragonFly: src/secure/lib/libssh/Attic/log.c.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- log.c.orig 2004-07-23 14:35:01.000000000 +0200
++++ log.c      2004-07-23 14:33:03.000000000 +0200
+@@ -42,6 +42,8 @@
+ #include <syslog.h>
+ #if defined(HAVE_STRNVIS) && defined(HAVE_VIS_H)
+ # include <vis.h>
++#else
++# include "openbsd-compat/vis.h"
+ #endif
+ static LogLevel log_level = SYSLOG_LEVEL_INFO;
diff --git a/secure/lib/libssh/porting/README b/secure/lib/libssh/porting/README
new file mode 100644 (file)
index 0000000..3d25649
--- /dev/null
@@ -0,0 +1,4 @@
+Files in here are not used for the build, but are handy
+for porting to a new version.
+
+$DragonFly: src/secure/lib/libssh/porting/Attic/README,v 1.1 2004/07/31 20:05:00 geekgod Exp $
diff --git a/secure/lib/libssh/porting/acconfig.h.patch b/secure/lib/libssh/porting/acconfig.h.patch
new file mode 100644 (file)
index 0000000..4071481
--- /dev/null
@@ -0,0 +1,13 @@
+$DragonFly: src/secure/lib/libssh/porting/Attic/acconfig.h.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- acconfig.h.orig    2004-04-16 01:22:40.000000000 +0200
++++ acconfig.h 2004-07-10 15:48:49.000000000 +0200
+@@ -271,6 +272,9 @@
+ /* Define if you want S/Key support */
+ #undef SKEY
++/* Define if you want OPIE support */
++#undef OPIE
++
+ /* Define if you want TCP Wrappers support */
+ #undef LIBWRAP
diff --git a/secure/lib/libssh/porting/configure.ac.patch b/secure/lib/libssh/porting/configure.ac.patch
new file mode 100644 (file)
index 0000000..b371fe5
--- /dev/null
@@ -0,0 +1,65 @@
+$DragonFly: src/secure/lib/libssh/porting/Attic/configure.ac.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- configure.ac.orig  2004-04-17 05:03:07.000000000 +0200
++++ configure.ac       2004-07-10 14:11:30.000000000 +0200
+@@ -759,6 +760,41 @@
+       ]
+ )
++# Check whether user wants OPIE support
++OPIE_MSG="no" 
++AC_ARG_WITH(opie,
++      [  --with-opie[[=PATH]]      Enable OPIE support
++                            (optionally in PATH)],
++      [
++              if test "x$withval" != "xno" ; then
++
++                      if test "x$withval" != "xyes" ; then
++                              CPPFLAGS="$CPPFLAGS -I${withval}/include"
++                              LDFLAGS="$LDFLAGS -L${withval}/lib"
++                      fi
++
++                      AC_DEFINE(SKEY)
++                      AC_DEFINE(OPIE)
++                      LIBS="-lopie $LIBS"
++                      OPIE_MSG="yes" 
++      
++                      AC_MSG_CHECKING([for opie support])
++                      AC_TRY_RUN(
++                              [
++#include <sys/types.h>
++#include <stdio.h>
++#include <opie.h>
++int main() { char *ff = opie_keyinfo(""); ff=""; return 0; }
++                              ],
++                              [AC_MSG_RESULT(yes)],
++                              [
++                                      AC_MSG_RESULT(no)
++                                      AC_MSG_ERROR([** Incomplete or missing opie libraries.])
++                              ])
++              fi
++      ]
++)
++
+ # Check whether user wants TCP wrappers support
+ TCPW_MSG="no"
+ AC_ARG_WITH(tcp-wrappers,
+@@ -2063,7 +2099,11 @@
+               ac_cv_have_getopt_optreset, [
+       AC_TRY_LINK(
+               [
++#if HAVE_GETOPT_H
+ #include <getopt.h>
++#elif HAVE_UNISTD_H
++#include <unistd.h>
++#endif
+               ],
+               [ extern int optreset; optreset = 0; ],
+               [ ac_cv_have_getopt_optreset="yes" ],
+@@ -2914,6 +2954,7 @@
+ echo "                 KerberosV support: $KRB5_MSG"
+ echo "                 Smartcard support: $SCARD_MSG"
+ echo "                     S/KEY support: $SKEY_MSG"
++echo "                      OPIE support: $OPIE_MSG"
+ echo "              TCP Wrappers support: $TCPW_MSG"
+ echo "              MD5 password support: $MD5_MSG"
+ echo "       IP address in \$DISPLAY hack: $DISPLAY_HACK_MSG"
diff --git a/secure/lib/libssh/version.c b/secure/lib/libssh/version.c
new file mode 100644 (file)
index 0000000..d64ab1b
--- /dev/null
@@ -0,0 +1,60 @@
+/*-
+ * Copyright (c) 2001 Brian Fundakowski Feldman
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD: src/crypto/openssh/version.c,v 1.1.2.3 2003/02/03 17:31:08 des Exp $
+ * $DragonFly: src/secure/lib/libssh/version.c,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+ */
+
+#include "version.h"
+#include "includes.h"
+#include "xmalloc.h"
+
+
+static char *version = NULL;
+
+const char *
+ssh_version_get(void) {
+
+       if (version == NULL)
+               version = xstrdup(SSH_VERSION_BASE " " SSH_VERSION_ADDENDUM);
+       return (version);
+}
+
+void
+ssh_version_set_addendum(const char *add) {
+       char *newvers;
+       size_t size;
+
+       if (add != NULL) {
+               size = strlen(SSH_VERSION_BASE) + 1 + strlen(add) + 1;
+               newvers = xmalloc(size);
+               snprintf(newvers, size, "%s %s", SSH_VERSION_BASE, add);
+       } else {
+               newvers = xstrdup(SSH_VERSION_BASE);
+       }
+       if (version != NULL)
+               xfree(version);
+       version = newvers;
+}
diff --git a/secure/lib/libssh/version.h b/secure/lib/libssh/version.h
new file mode 100644 (file)
index 0000000..cf95203
--- /dev/null
@@ -0,0 +1,12 @@
+/* $OpenBSD: version.h,v 1.41 2004/03/20 10:40:59 markus Exp $ */
+/* $DragonFly: src/secure/lib/libssh/version.h,v 1.1 2004/07/31 20:05:00 geekgod Exp $ */
+
+#ifndef SSH_VERSION
+
+#define SSH_VERSION             (ssh_version_get())
+#define SSH_VERSION_BASE        "OpenSSH_3.8.1p1"
+#define SSH_VERSION_ADDENDUM    "DragonFly-20040710"
+
+const char *ssh_version_get(void);
+void ssh_version_set_addendum(const char *add);
+#endif /* SSH_VERSION */
diff --git a/secure/usr.bin/ssh-agent/ssh-agent.c.patch b/secure/usr.bin/ssh-agent/ssh-agent.c.patch
new file mode 100644 (file)
index 0000000..5191e8d
--- /dev/null
@@ -0,0 +1,11 @@
+$DragonFly: src/secure/usr.bin/ssh-agent/Attic/ssh-agent.c.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- ssh-agent.c.orig   2004-03-03 01:08:59.000000000 +0100
++++ ssh-agent.c        2004-07-23 13:12:03.000000000 +0200
+@@ -1026,6 +1026,7 @@
+       /* drop */
+       setegid(getgid());
+       setgid(getgid());
++      setuid(geteuid());
+ #if defined(HAVE_PRCTL) && defined(PR_SET_DUMPABLE)
+       /* Disable ptrace on Linux without sgid bit */
diff --git a/secure/usr.bin/ssh/readconf.c.patch b/secure/usr.bin/ssh/readconf.c.patch
new file mode 100644 (file)
index 0000000..bddfd2e
--- /dev/null
@@ -0,0 +1,42 @@
+$DragonFly: src/secure/usr.bin/ssh/Attic/readconf.c.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- readconf.c.orig    2004-03-08 13:12:36.000000000 +0100
++++ readconf.c 2004-07-23 13:16:14.000000000 +0200
+@@ -106,6 +106,7 @@
+       oEnableSSHKeysign, oRekeyLimit, oVerifyHostKeyDNS, oConnectTimeout,
+       oAddressFamily, oGssAuthentication, oGssDelegateCreds,
+       oServerAliveInterval, oServerAliveCountMax, oIdentitiesOnly,
++      oVersionAddendum,
+       oDeprecated, oUnsupported
+ } OpCodes;
+@@ -193,6 +194,7 @@
+       { "addressfamily", oAddressFamily },
+       { "serveraliveinterval", oServerAliveInterval },
+       { "serveralivecountmax", oServerAliveCountMax },
++      { "versionaddendum", oVersionAddendum },
+       { NULL, oBadOption }
+ };
+@@ -749,6 +751,13 @@
+               intptr = &options->server_alive_count_max;
+               goto parse_int;
++      case oVersionAddendum:
++              ssh_version_set_addendum(strtok(s, "\n"));
++              do {
++                      arg = strdelim(&s);
++              } while (arg != NULL && *arg != '\0');
++              break;
++
+       case oDeprecated:
+               debug("%s line %d: Deprecated option \"%s\"",
+                   filename, linenum, keyword);
+@@ -924,7 +933,7 @@
+       if (options->batch_mode == -1)
+               options->batch_mode = 0;
+       if (options->check_host_ip == -1)
+-              options->check_host_ip = 1;
++              options->check_host_ip = 0;
+       if (options->strict_host_key_checking == -1)
+               options->strict_host_key_checking = 2;  /* 2 is default */
+       if (options->compression == -1)
diff --git a/secure/usr.bin/ssh/ssh.1.no_obj.patch b/secure/usr.bin/ssh/ssh.1.no_obj.patch
new file mode 100644 (file)
index 0000000..5ecdb88
--- /dev/null
@@ -0,0 +1,38 @@
+$DragonFly: src/secure/usr.bin/ssh/Attic/ssh.1.no_obj.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- ssh.1.orig 2004-03-08 13:12:36.000000000 +0100
++++ ssh.1      2004-07-23 13:16:14.000000000 +0200
+@@ -105,7 +105,7 @@
+ First, if the machine the user logs in from is listed in
+ .Pa /etc/hosts.equiv
+ or
+-.Pa /etc/shosts.equiv
++.Pa /etc/ssh/shosts.equiv
+ on the remote machine, and the user names are
+ the same on both sides, the user is immediately permitted to log in.
+ Second, if
+@@ -129,7 +129,7 @@
+ .Pa $HOME/.shosts ,
+ .Pa /etc/hosts.equiv ,
+ or
+-.Pa /etc/shosts.equiv ,
++.Pa /etc/ssh/shosts.equiv ,
+ and if additionally the server can verify the client's
+ host key (see
+ .Pa /etc/ssh/ssh_known_hosts
+@@ -332,6 +332,7 @@
+ .Ev DISPLAY .
+ Forwarding of X11 connections can be
+ configured on the command line or in configuration files.
++Take note that X11 forwarding can represent a security hazard.
+ .Pp
+ The
+ .Ev DISPLAY
+@@ -1004,7 +1005,7 @@
+ Additionally, successful RSA host authentication is normally
+ required.
+ This file should only be writable by root.
+-.It Pa /etc/shosts.equiv
++.It Pa /etc/ssh/shosts.equiv
+ This file is processed exactly as
+ .Pa /etc/hosts.equiv .
+ This file may be useful to permit logins using
diff --git a/secure/usr.bin/ssh/ssh.c.patch b/secure/usr.bin/ssh/ssh.c.patch
new file mode 100644 (file)
index 0000000..6711d92
--- /dev/null
@@ -0,0 +1,27 @@
+$DragonFly: src/secure/usr.bin/ssh/Attic/ssh.c.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- ssh.c.orig 2004-03-21 23:36:01.000000000 +0100
++++ ssh.c      2004-07-23 13:16:14.000000000 +0200
+@@ -554,6 +554,23 @@
+       if (options.hostname != NULL)
+               host = options.hostname;
++      /* Find canonic host name. */
++      if (strchr(host, '.') == 0) {
++              struct addrinfo hints;
++              struct addrinfo *ai = NULL;
++              int errgai;
++              memset(&hints, 0, sizeof(hints));
++              hints.ai_family = options.address_family;
++              hints.ai_flags = AI_CANONNAME;
++              hints.ai_socktype = SOCK_STREAM;
++              errgai = getaddrinfo(host, NULL, &hints, &ai);
++              if (errgai == 0) {
++                      if (ai->ai_canonname != NULL)
++                              host = xstrdup(ai->ai_canonname);
++                      freeaddrinfo(ai);
++              }
++      }
++
+       /* force lowercase for hostkey matching */
+       if (options.host_key_alias != NULL) {
+               for (p = options.host_key_alias; *p; p++)
diff --git a/secure/usr.bin/ssh/ssh_config.5.no_obj.patch b/secure/usr.bin/ssh/ssh_config.5.no_obj.patch
new file mode 100644 (file)
index 0000000..9731a92
--- /dev/null
@@ -0,0 +1,24 @@
+$DragonFly: src/secure/usr.bin/ssh/Attic/ssh_config.5.no_obj.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- ssh_config.5.orig  2004-03-08 13:12:36.000000000 +0100
++++ ssh_config.5       2004-07-23 13:16:14.000000000 +0200
+@@ -161,7 +161,7 @@
+ .Dq no ,
+ the check will not be executed.
+ The default is
+-.Dq yes .
++.Dq no .
+ .It Cm Cipher
+ Specifies the cipher to use for encrypting the session
+ in protocol version 1.
+@@ -714,6 +714,11 @@
+ The default is
+ .Dq no .
+ Note that this option applies to protocol version 2 only.
++.It Cm VersionAddendum
++Specifies a string to append to the regular version string to identify
++OS- or site-specific modifications.
++The default is
++.Dq DragonFly-20040710 .
+ .It Cm XAuthLocation
+ Specifies the full pathname of the
+ .Xr xauth 1
diff --git a/secure/usr.bin/ssh/ssh_config.no_obj.patch b/secure/usr.bin/ssh/ssh_config.no_obj.patch
new file mode 100644 (file)
index 0000000..1bc0392
--- /dev/null
@@ -0,0 +1,17 @@
+$DragonFly: src/secure/usr.bin/ssh/Attic/ssh_config.no_obj.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- ssh_config.orig    2003-08-13 12:37:05.000000000 +0200
++++ ssh_config 2004-07-23 13:16:14.000000000 +0200
+@@ -23,7 +23,7 @@
+ #   PasswordAuthentication yes
+ #   HostbasedAuthentication no
+ #   BatchMode no
+-#   CheckHostIP yes
++#   CheckHostIP no
+ #   AddressFamily any
+ #   ConnectTimeout 0
+ #   StrictHostKeyChecking ask
+@@ -35,3 +35,4 @@
+ #   Cipher 3des
+ #   Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc
+ #   EscapeChar ~
++#   VersionAddendum DragonFly-20040710
diff --git a/secure/usr.sbin/sshd/auth-passwd-freebsd.c b/secure/usr.sbin/sshd/auth-passwd-freebsd.c
new file mode 100644 (file)
index 0000000..1ef70c2
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * $DragonFly: src/secure/usr.sbin/sshd/auth-passwd-freebsd.c,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+ */
+
+#include <unistd.h>
+
+#include "auth.h"
+
+int
+sys_auth_passwd(Authctxt *authctxt, const char *password)
+{
+       struct passwd *pw = authctxt->pw;
+       char *encrypted_password;
+       char *pw_password = pw->pw_passwd;
+
+       /* Check for users with no password. */
+       if (strcmp(pw_password, "") == 0 && strcmp(password, "") == 0)
+               return (1);
+
+       /* Encrypt the candidate password using the proper salt. */
+       encrypted_password = crypt(password,
+           (pw_password[0] && pw_password[1]) ? pw_password : "xx");
+
+       /*
+        * Authentication is accepted if the encrypted passwords
+        * are identical.
+        */
+       return (strcmp(encrypted_password, pw_password) == 0);
+}
diff --git a/secure/usr.sbin/sshd/auth-skey.c.patch b/secure/usr.sbin/sshd/auth-skey.c.patch
new file mode 100644 (file)
index 0000000..fbcb9e8
--- /dev/null
@@ -0,0 +1,19 @@
+$DragonFly: src/secure/usr.sbin/sshd/Attic/auth-skey.c.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- auth-skey.c.orig   2004-07-23 14:26:51.000000000 +0200
++++ auth-skey.c        2004-07-23 14:20:00.000000000 +0200
+@@ -26,7 +26,15 @@
+ #ifdef SKEY
++#ifdef OPIE
++#include <opie.h>
++#define skey                  opie
++#define skeychallenge(k, u, c)        opiechallenge((k), (u), (c))
++#define skey_haskey(u)                opie_haskey((u))
++#define skey_passcheck(u, r)  opie_passverify((u), (r))
++#else
+ #include <skey.h>
++#endif
+ #include "xmalloc.h"
+ #include "auth.h"
diff --git a/secure/usr.sbin/sshd/auth.c.patch b/secure/usr.sbin/sshd/auth.c.patch
new file mode 100644 (file)
index 0000000..e3c7a4e
--- /dev/null
@@ -0,0 +1,12 @@
+$DragonFly: src/secure/usr.sbin/sshd/Attic/auth.c.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- auth.c.orig        2004-07-23 14:26:51.000000000 +0200
++++ auth.c     2004-07-23 14:20:00.000000000 +0200
+@@ -494,7 +494,7 @@
+       if (!allowed_user(pw))
+               return (NULL);
+ #ifdef HAVE_LOGIN_CAP
+-      if ((lc = login_getclass(pw->pw_class)) == NULL) {
++      if ((lc = login_getpwclass(pw)) == NULL) {
+               debug("unable to get login class: %s", user);
+               return (NULL);
+       }
diff --git a/secure/usr.sbin/sshd/auth.h.patch b/secure/usr.sbin/sshd/auth.h.patch
new file mode 100644 (file)
index 0000000..ef4e80c
--- /dev/null
@@ -0,0 +1,16 @@
+$DragonFly: src/secure/usr.sbin/sshd/Attic/auth.h.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- auth.h.orig        2004-07-23 14:26:51.000000000 +0200
++++ auth.h     2004-07-23 14:20:00.000000000 +0200
+@@ -185,5 +185,12 @@
+ #define AUTH_FAIL_LOG (AUTH_FAIL_MAX/2)
+ #define AUTH_FAIL_MSG "Too many authentication failures for %.100s"
++#ifdef SKEY
++#ifdef OPIE
++#define SKEY_PROMPT "\nOPIE Password: "
++#else
+ #define SKEY_PROMPT "\nS/Key Password: "
+ #endif
++#endif
++
++#endif
diff --git a/secure/usr.sbin/sshd/auth2-pam-freebsd.c b/secure/usr.sbin/sshd/auth2-pam-freebsd.c
new file mode 100644 (file)
index 0000000..c4b7e8b
--- /dev/null
@@ -0,0 +1,679 @@
+/*-
+ * Copyright (c) 2002 Networks Associates Technology, Inc.
+ * All rights reserved.
+ *
+ * This software was developed for the FreeBSD Project by ThinkSec AS and
+ * NAI Labs, the Security Research Division of Network Associates, Inc.
+ * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the
+ * DARPA CHATS research program.
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
+ *
+ * $FreeBSD: src/crypto/openssh/auth2-pam-freebsd.c,v 1.1.2.6 2003/04/07 09:56:46 des Exp $
+ * $DragonFly: src/secure/usr.sbin/sshd/Attic/auth2-pam-freebsd.c,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+ */
+
+#include "includes.h"
+
+#ifdef USE_PAM
+#include <security/pam_appl.h>
+
+#include "auth.h"
+#include "auth-pam.h"
+#include "buffer.h"
+#include "bufaux.h"
+#include "canohost.h"
+#include "log.h"
+#include "monitor_wrap.h"
+#include "msg.h"
+#include "packet.h"
+#include "readpass.h"
+#include "servconf.h"
+#include "ssh2.h"
+#include "xmalloc.h"
+
+#ifdef USE_POSIX_THREADS
+#include <pthread.h>
+#else
+typedef pid_t pthread_t;
+#endif
+
+struct pam_ctxt {
+       pthread_t        pam_thread;
+       int              pam_psock;
+       int              pam_csock;
+       int              pam_done;
+};
+
+static void sshpam_free_ctx(void *);
+static struct pam_ctxt *cleanup_ctxt;
+
+#ifndef USE_POSIX_THREADS
+/*
+ * Simulate threads with processes.
+ */
+
+static int sshpam_thread_status = -1;
+static mysig_t sshpam_oldsig;
+
+static void 
+sshpam_sigchld_handler(int sig)
+{
+       if (cleanup_ctxt == NULL)
+               return; /* handler called after PAM cleanup, shouldn't happen */
+       if (waitpid(cleanup_ctxt->pam_thread, &sshpam_thread_status, 0) == -1)
+               return; /* couldn't wait for process */
+       if (WIFSIGNALED(sshpam_thread_status) &&
+           WTERMSIG(sshpam_thread_status) == SIGTERM)
+               return; /* terminated by pthread_cancel */
+       if (!WIFEXITED(sshpam_thread_status))
+               fatal("PAM: authentication thread exited unexpectedly");
+       if (WEXITSTATUS(sshpam_thread_status) != 0)
+               fatal("PAM: authentication thread exited uncleanly");
+}
+
+
+static void
+pthread_exit(void *value __unused)
+{
+       _exit(0);
+}
+
+static int
+pthread_create(pthread_t *thread, const void *attr __unused,
+    void *(*thread_start)(void *), void *arg)
+{
+       pid_t pid;
+
+       switch ((pid = fork())) {
+       case -1:
+               error("fork(): %s", strerror(errno));
+               return (-1);
+       case 0:
+               thread_start(arg);
+               _exit(1);
+       default:
+               *thread = pid;
+               sshpam_oldsig = signal(SIGCHLD, sshpam_sigchld_handler);
+               return (0);
+       }
+}
+
+static int
+pthread_cancel(pthread_t thread)
+{
+       signal(SIGCHLD, sshpam_oldsig);
+       return (kill(thread, SIGTERM));
+}
+
+static int
+pthread_join(pthread_t thread, void **value __unused)
+{
+       int status;
+
+       if (sshpam_thread_status != -1)
+               return (sshpam_thread_status);
+       signal(SIGCHLD, sshpam_oldsig);
+       waitpid(thread, &status, 0);
+       return (status);
+}
+#endif
+
+
+extern ServerOptions options;
+static pam_handle_t *sshpam_handle;
+static int sshpam_err;
+static int sshpam_authenticated;
+static int sshpam_new_authtok_reqd;
+static int sshpam_session_open;
+static int sshpam_cred_established;
+
+/*
+ * Conversation function for authentication thread.
+ */
+static int
+sshpam_thread_conv(int n,
+        const struct pam_message **msg,
+        struct pam_response **resp,
+        void *data)
+{
+       Buffer buffer;
+       struct pam_ctxt *ctxt;
+       int i;
+
+       ctxt = data;
+       if (n <= 0 || n > PAM_MAX_NUM_MSG)
+               return (PAM_CONV_ERR);
+       *resp = xmalloc(n * sizeof **resp);
+       buffer_init(&buffer);
+       for (i = 0; i < n; ++i) {
+               resp[i]->resp_retcode = 0;
+               resp[i]->resp = NULL;
+               switch (msg[i]->msg_style) {
+               case PAM_PROMPT_ECHO_OFF:
+                       buffer_put_cstring(&buffer, msg[i]->msg);
+                       ssh_msg_send(ctxt->pam_csock, msg[i]->msg_style, &buffer);
+                       ssh_msg_recv(ctxt->pam_csock, &buffer);
+                       if (buffer_get_char(&buffer) != PAM_AUTHTOK)
+                               goto fail;
+                       resp[i]->resp = buffer_get_string(&buffer, NULL);
+                       break;
+               case PAM_PROMPT_ECHO_ON:
+                       buffer_put_cstring(&buffer, msg[i]->msg);
+                       ssh_msg_send(ctxt->pam_csock, msg[i]->msg_style, &buffer);
+                       ssh_msg_recv(ctxt->pam_csock, &buffer);
+                       if (buffer_get_char(&buffer) != PAM_AUTHTOK)
+                               goto fail;
+                       resp[i]->resp = buffer_get_string(&buffer, NULL);
+                       break;
+               case PAM_ERROR_MSG:
+                       buffer_put_cstring(&buffer, msg[i]->msg);
+                       ssh_msg_send(ctxt->pam_csock, msg[i]->msg_style, &buffer);
+                       break;
+               case PAM_TEXT_INFO:
+                       buffer_put_cstring(&buffer, msg[i]->msg);
+                       ssh_msg_send(ctxt->pam_csock, msg[i]->msg_style, &buffer);
+                       break;
+               default:
+                       goto fail;
+               }
+               buffer_clear(&buffer);
+       }
+       buffer_free(&buffer);
+       return (PAM_SUCCESS);
+ fail:
+       while (i)
+               xfree(resp[--i]);
+       xfree(*resp);
+       *resp = NULL;
+       buffer_free(&buffer);
+       return (PAM_CONV_ERR);
+}
+
+/*
+ * Authentication thread.
+ */
+static void *
+sshpam_thread(void *ctxtp)
+{
+       struct pam_ctxt *ctxt = ctxtp;
+       Buffer buffer;
+       struct pam_conv pam_conv = { sshpam_thread_conv, ctxt };
+
+#ifndef USE_POSIX_THREADS
+       {
+               const char *pam_user;
+
+               pam_get_item(sshpam_handle, PAM_USER, (const void **)&pam_user);
+               setproctitle("%s [pam]", pam_user);
+       }
+#endif
+       buffer_init(&buffer);
+       sshpam_err = pam_set_item(sshpam_handle, PAM_CONV, (const void *)&pam_conv);
+       if (sshpam_err != PAM_SUCCESS)
+               goto auth_fail;
+       sshpam_err = pam_authenticate(sshpam_handle, 0);
+       if (sshpam_err != PAM_SUCCESS)
+               goto auth_fail;
+       sshpam_err = pam_acct_mgmt(sshpam_handle, 0);
+       if (sshpam_err != PAM_SUCCESS && sshpam_err != PAM_NEW_AUTHTOK_REQD)
+               goto auth_fail;
+       buffer_put_cstring(&buffer, "OK");
+       ssh_msg_send(ctxt->pam_csock, sshpam_err, &buffer);
+       buffer_free(&buffer);
+       pthread_exit(NULL);
+ auth_fail:
+       buffer_put_cstring(&buffer,
+           pam_strerror(sshpam_handle, sshpam_err));
+       ssh_msg_send(ctxt->pam_csock, PAM_AUTH_ERR, &buffer);
+       buffer_free(&buffer);
+       pthread_exit(NULL);
+}
+
+void
+sshpam_thread_cleanup(void)
+{
+       struct pam_ctxt *ctxt = cleanup_ctxt;
+
+       if (ctxt != NULL && ctxt->pam_thread != 0) {
+               pthread_cancel(ctxt->pam_thread);
+               pthread_join(ctxt->pam_thread, NULL);
+               close(ctxt->pam_psock);
+               close(ctxt->pam_csock);
+               memset(ctxt, 0, sizeof(*ctxt));
+               cleanup_ctxt = NULL;
+       }
+}
+
+static int
+sshpam_null_conv(int n,
+        const struct pam_message **msg,
+        struct pam_response **resp,
+        void *data)
+{
+
+       return (PAM_CONV_ERR);
+}
+
+static struct pam_conv null_conv = { sshpam_null_conv, NULL };
+
+void
+sshpam_cleanup(void)
+{
+       debug("PAM: cleanup");
+       pam_set_item(sshpam_handle, PAM_CONV, (const void *)&null_conv);
+       if (sshpam_cred_established) {
+               pam_setcred(sshpam_handle, PAM_DELETE_CRED);
+               sshpam_cred_established = 0;
+       }
+       if (sshpam_session_open) {
+               pam_close_session(sshpam_handle, PAM_SILENT);
+               sshpam_session_open = 0;
+       }
+       sshpam_authenticated = sshpam_new_authtok_reqd = 0;
+       pam_end(sshpam_handle, sshpam_err);
+       sshpam_handle = NULL;
+}
+
+static int
+sshpam_init(Authctxt *authctxt)
+{
+       extern u_int utmp_len;
+       const char *pam_rhost, *pam_user, *user = authctxt->user;
+
+       if (sshpam_handle != NULL) {
+               /* We already have a PAM context; check if the user matches */
+               sshpam_err = pam_get_item(sshpam_handle,
+                   PAM_USER, (const void **)&pam_user);
+               if (sshpam_err == PAM_SUCCESS && strcmp(user, pam_user) == 0)
+                       return (0);
+               pam_end(sshpam_handle, sshpam_err);
+               sshpam_handle = NULL;
+       }
+       debug("PAM: initializing for \"%s\"", user);
+       sshpam_err = pam_start("sshd", user, &null_conv, &sshpam_handle);
+       if (sshpam_err != PAM_SUCCESS)
+               return (-1);
+       pam_rhost = get_remote_name_or_ip(utmp_len, options.use_dns);
+       debug("PAM: setting PAM_RHOST to \"%s\"", pam_rhost);
+       sshpam_err = pam_set_item(sshpam_handle, PAM_RHOST, pam_rhost);
+       if (sshpam_err != PAM_SUCCESS) {
+               pam_end(sshpam_handle, sshpam_err);
+               sshpam_handle = NULL;
+               return (-1);
+       }
+       return (0);
+}
+
+static void *
+sshpam_init_ctx(Authctxt *authctxt)
+{
+       struct pam_ctxt *ctxt;
+       int socks[2];
+
+       /* Initialize PAM */
+       if (sshpam_init(authctxt) == -1) {
+               error("PAM: initialization failed");
+               return (NULL);
+       }
+
+       ctxt = xmalloc(sizeof *ctxt);
+       ctxt->pam_done = 0;
+
+       /* Start the authentication thread */
+       if (socketpair(AF_UNIX, SOCK_STREAM, PF_UNSPEC, socks) == -1) {
+               error("PAM: failed create sockets: %s", strerror(errno));
+               xfree(ctxt);
+               return (NULL);
+       }
+       ctxt->pam_psock = socks[0];
+       ctxt->pam_csock = socks[1];
+       if (pthread_create(&ctxt->pam_thread, NULL, sshpam_thread, ctxt) == -1) {
+               error("PAM: failed to start authentication thread: %s",
+                   strerror(errno));
+               close(socks[0]);
+               close(socks[1]);
+               xfree(ctxt);
+               return (NULL);
+       }
+       cleanup_ctxt = ctxt;
+       return (ctxt);
+}
+
+static int
+sshpam_query(void *ctx, char **name, char **info,
+    u_int *num, char ***prompts, u_int **echo_on)
+{
+       Buffer buffer;
+       struct pam_ctxt *ctxt = ctx;
+       size_t plen;
+       u_char type;
+       char *msg;
+
+       buffer_init(&buffer);
+       *name = xstrdup("");
+       *info = xstrdup("");
+       *prompts = xmalloc(sizeof(char *));
+       **prompts = NULL;
+       plen = 0;
+       *echo_on = xmalloc(sizeof(u_int));
+       while (ssh_msg_recv(ctxt->pam_psock, &buffer) == 0) {
+               type = buffer_get_char(&buffer);
+               msg = buffer_get_string(&buffer, NULL);
+               switch (type) {
+               case PAM_PROMPT_ECHO_ON:
+               case PAM_PROMPT_ECHO_OFF:
+                       *num = 1;
+                       **prompts = xrealloc(**prompts, plen + strlen(msg) + 1);
+                       plen += sprintf(**prompts + plen, "%s", msg);
+                       **echo_on = (type == PAM_PROMPT_ECHO_ON);
+                       xfree(msg);
+                       return (0);
+               case PAM_ERROR_MSG:
+               case PAM_TEXT_INFO:
+                       /* accumulate messages */
+                       **prompts = xrealloc(**prompts, plen + strlen(msg) + 1);
+                       plen += sprintf(**prompts + plen, "%s", msg);
+                       xfree(msg);
+                       break;
+               case PAM_NEW_AUTHTOK_REQD:
+                       sshpam_new_authtok_reqd = 1;
+                       /* FALLTHROUGH */
+               case PAM_SUCCESS:
+               case PAM_AUTH_ERR:
+                       if (**prompts != NULL) {
+                               /* drain any accumulated messages */
+#if 0 /* not compatible with privsep */
+                               packet_start(SSH2_MSG_USERAUTH_BANNER);
+                               packet_put_cstring(**prompts);
+                               packet_put_cstring("");
+                               packet_send();
+                               packet_write_wait();
+#endif
+                               xfree(**prompts);
+                               **prompts = NULL;
+                       }
+                       if (type == PAM_SUCCESS) {
+                               *num = 0;
+                               **echo_on = 0;
+                               ctxt->pam_done = 1;
+                               xfree(msg);
+                               return (0);
+                       }
+                       error("PAM: %s", msg);
+               default:
+                       *num = 0;
+                       **echo_on = 0;
+                       xfree(msg);
+                       ctxt->pam_done = -1;
+                       return (-1);
+               }
+       }
+       return (-1);
+}
+
+static int
+sshpam_respond(void *ctx, u_int num, char **resp)
+{
+       Buffer buffer;
+       struct pam_ctxt *ctxt = ctx;
+       char *msg;
+
+       debug2("PAM: %s", __func__);
+       switch (ctxt->pam_done) {
+       case 1:
+               sshpam_authenticated = 1;
+               return (0);
+       case 0:
+               break;
+       default:
+               return (-1);
+       }
+       if (num != 1) {
+               error("PAM: expected one response, got %u", num);
+               return (-1);
+       }
+       buffer_init(&buffer);
+       buffer_put_cstring(&buffer, *resp);
+       ssh_msg_send(ctxt->pam_psock, PAM_AUTHTOK, &buffer);
+       buffer_free(&buffer);
+       return (1);
+}
+
+static void
+sshpam_free_ctx(void *ctxtp)
+{
+       struct pam_ctxt *ctxt = ctxtp;
+
+       sshpam_thread_cleanup();
+       xfree(ctxt);
+       /*
+        * We don't call pam_cleanup() here because we may need the PAM
+        * handle at a later stage, e.g. when setting up a session.  It's
+        * still on the cleanup list, so pam_end() *will* be called before
+        * the server process terminates.
+        */
+}
+
+KbdintDevice sshpam_device = {
+       "pam",
+       sshpam_init_ctx,
+       sshpam_query,
+       sshpam_respond,
+       sshpam_free_ctx
+};
+
+KbdintDevice mm_sshpam_device = {
+       "pam",
+       mm_sshpam_init_ctx,
+       mm_sshpam_query,
+       mm_sshpam_respond,
+       mm_sshpam_free_ctx
+};
+
+/*
+ * This replaces auth-pam.c
+ */
+void
+start_pam(Authctxt *authctxt)
+{
+       if (!options.use_pam)
+               fatal("PAM: initialisation requested when UsePAM=no");
+
+       if (sshpam_init(authctxt) == -1)
+               fatal("PAM: initialisation failed");
+}
+
+void
+finish_pam(void)
+{
+       sshpam_cleanup();
+}
+
+u_int
+do_pam_account(void)
+{
+       /* XXX */
+       return (1);
+}
+
+void
+do_pam_set_tty(const char *tty)
+{
+       if (tty != NULL) {
+               debug("PAM: setting PAM_TTY to \"%s\"", tty);
+               sshpam_err = pam_set_item(sshpam_handle, PAM_TTY, tty);
+               if (sshpam_err != PAM_SUCCESS)
+                       fatal("PAM: failed to set PAM_TTY: %s",
+                           pam_strerror(sshpam_handle, sshpam_err));
+       }
+}
+
+void
+do_pam_session(void)
+{
+       sshpam_err = pam_set_item(sshpam_handle, PAM_CONV, (const void *)&null_conv);
+       if (sshpam_err != PAM_SUCCESS)
+               fatal("PAM: failed to set PAM_CONV: %s",
+                   pam_strerror(sshpam_handle, sshpam_err));
+       sshpam_err = pam_open_session(sshpam_handle, 0);
+       if (sshpam_err != PAM_SUCCESS)
+               fatal("PAM: pam_open_session(): %s",
+                   pam_strerror(sshpam_handle, sshpam_err));
+       sshpam_session_open = 1;
+}
+
+void
+do_pam_setcred(int init)
+{
+       sshpam_err = pam_set_item(sshpam_handle, PAM_CONV, (const void *)&null_conv);
+       if (sshpam_err != PAM_SUCCESS)
+               fatal("PAM: failed to set PAM_CONV: %s",
+                   pam_strerror(sshpam_handle, sshpam_err));
+       if (init) {
+               debug("PAM: establishing credentials");
+               sshpam_err = pam_setcred(sshpam_handle, PAM_ESTABLISH_CRED);
+       } else {
+               debug("PAM: reinitializing credentials");
+               sshpam_err = pam_setcred(sshpam_handle, PAM_REINITIALIZE_CRED);
+       }
+       if (sshpam_err == PAM_SUCCESS) {
+               sshpam_cred_established = 1;
+               return;
+       }
+       if (sshpam_authenticated)
+               fatal("PAM: pam_setcred(): %s",
+                   pam_strerror(sshpam_handle, sshpam_err));
+       else
+               debug("PAM: pam_setcred(): %s",
+                   pam_strerror(sshpam_handle, sshpam_err));
+}
+
+int
+is_pam_password_change_required(void)
+{
+       return (sshpam_new_authtok_reqd);
+}
+
+static int
+sshpam_chauthtok_conv(int n,
+        const struct pam_message **msg,
+        struct pam_response **resp,
+        void *data)
+{
+       char input[PAM_MAX_MSG_SIZE];
+       int i;
+
+       if (n <= 0 || n > PAM_MAX_NUM_MSG)
+               return (PAM_CONV_ERR);
+       *resp = xmalloc(n * sizeof **resp);
+       for (i = 0; i < n; ++i) {
+               switch (msg[i]->msg_style) {
+               case PAM_PROMPT_ECHO_OFF:
+                       resp[i]->resp =
+                           read_passphrase(msg[i]->msg, RP_ALLOW_STDIN);
+                       resp[i]->resp_retcode = PAM_SUCCESS;
+                       break;
+               case PAM_PROMPT_ECHO_ON:
+                       fputs(msg[i]->msg, stderr);
+                       fgets(input, sizeof input, stdin);
+                       resp[i]->resp = xstrdup(input);
+                       resp[i]->resp_retcode = PAM_SUCCESS;
+                       break;
+               case PAM_ERROR_MSG:
+               case PAM_TEXT_INFO:
+                       fputs(msg[i]->msg, stderr);
+                       resp[i]->resp_retcode = PAM_SUCCESS;
+                       break;
+               default:
+                       goto fail;
+               }
+       }
+       return (PAM_SUCCESS);
+ fail:
+       while (i)
+               xfree(resp[--i]);
+       xfree(*resp);
+       *resp = NULL;
+       return (PAM_CONV_ERR);
+}
+
+/*
+ * XXX this should be done in the authentication phase, but ssh1 doesn't
+ * support that
+ */
+void
+do_pam_chauthtok(void)
+{
+       struct pam_conv pam_conv = { sshpam_chauthtok_conv, NULL };
+
+       if (use_privsep)
+               fatal("PAM: chauthtok not supprted with privsep");
+       sshpam_err = pam_set_item(sshpam_handle, PAM_CONV, (const void *)&pam_conv);
+       if (sshpam_err != PAM_SUCCESS)
+               fatal("PAM: failed to set PAM_CONV: %s",
+                   pam_strerror(sshpam_handle, sshpam_err));
+       debug("PAM: changing password");
+       sshpam_err = pam_chauthtok(sshpam_handle, PAM_CHANGE_EXPIRED_AUTHTOK);
+       if (sshpam_err != PAM_SUCCESS)
+               fatal("PAM: pam_chauthtok(): %s",
+                   pam_strerror(sshpam_handle, sshpam_err));
+}
+
+void
+print_pam_messages(void)
+{
+       /* XXX */
+}
+
+char **
+fetch_pam_child_environment(void)
+{
+       /* XXX */
+       return (NULL);
+}
+
+char **
+fetch_pam_environment(void)
+{
+#ifdef HAVE_PAM_GETENVLIST
+       debug("PAM: retrieving environment");
+       return (pam_getenvlist(sshpam_handle));
+#else
+       return (NULL);
+#endif
+}
+
+void
+free_pam_environment(char **env)
+{
+       char **envp;
+
+       if (env == NULL)
+               return;
+
+       for (envp = env; *envp; envp++)
+               xfree(*envp);
+       xfree(env);
+}
+
+#endif /* USE_PAM */
diff --git a/secure/usr.sbin/sshd/auth2.c.patch b/secure/usr.sbin/sshd/auth2.c.patch
new file mode 100644 (file)
index 0000000..72ab7c6
--- /dev/null
@@ -0,0 +1,53 @@
+$DragonFly: src/secure/usr.sbin/sshd/Attic/auth2.c.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- auth2.c.orig       2004-07-23 14:26:51.000000000 +0200
++++ auth2.c    2004-07-23 14:20:00.000000000 +0200
+@@ -25,6 +25,7 @@
+ #include "includes.h"
+ RCSID("$OpenBSD: auth2.c,v 1.104 2003/11/04 08:54:09 djm Exp $");
++#include "canohost.h"
+ #include "ssh2.h"
+ #include "xmalloc.h"
+ #include "packet.h"
+@@ -134,6 +135,13 @@
+       Authmethod *m = NULL;
+       char *user, *service, *method, *style = NULL;
+       int authenticated = 0;
++#ifdef HAVE_LOGIN_CAP
++      login_cap_t *lc;
++      const char *from_host, *from_ip;
++
++        from_host = get_canonical_hostname(options.use_dns);
++        from_ip = get_remote_ipaddr();
++#endif
+       if (authctxt == NULL)
+               fatal("input_userauth_request: no authctxt");
+@@ -178,6 +186,27 @@
+                   "(%s,%s) -> (%s,%s)",
+                   authctxt->user, authctxt->service, user, service);
+       }
++
++#ifdef HAVE_LOGIN_CAP
++        if (authctxt->pw != NULL) {
++                lc = login_getpwclass(authctxt->pw);
++                if (lc == NULL)
++                        lc = login_getclassbyname(NULL, authctxt->pw);
++                if (!auth_hostok(lc, from_host, from_ip)) {
++                        logit("Denied connection for %.200s from %.200s [%.200s].",
++                            authctxt->pw->pw_name, from_host, from_ip);
++                        packet_disconnect("Sorry, you are not allowed to connect.");
++                }
++                if (!auth_timeok(lc, time(NULL))) {
++                        logit("LOGIN %.200s REFUSED (TIME) FROM %.200s",
++                            authctxt->pw->pw_name, from_host);
++                        packet_disconnect("Logins not available right now.");
++                }
++                login_close(lc);
++                lc = NULL;
++        }
++#endif  /* HAVE_LOGIN_CAP */
++
+       /* reset state */
+       auth2_challenge_stop(authctxt);
diff --git a/secure/usr.sbin/sshd/loginrec.c.patch b/secure/usr.sbin/sshd/loginrec.c.patch
new file mode 100644 (file)
index 0000000..ef1725d
--- /dev/null
@@ -0,0 +1,13 @@
+$DragonFly: src/secure/usr.sbin/sshd/Attic/loginrec.c.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- loginrec.c.orig    2004-07-23 14:26:51.000000000 +0200
++++ loginrec.c 2004-07-23 14:20:00.000000000 +0200
+@@ -652,7 +652,8 @@
+       /* Use strncpy because we don't necessarily want null termination */
+       strncpy(ut->ut_name, li->username, MIN_SIZEOF(ut->ut_name, li->username));
+ # ifdef HAVE_HOST_IN_UTMP
+-      strncpy(ut->ut_host, li->hostname, MIN_SIZEOF(ut->ut_host, li->hostname));
++      realhostname_sa(ut->ut_host, sizeof ut->ut_host,
++          &li->hostaddr.sa, li->hostaddr.sa.sa_len);
+ # endif
+ # ifdef HAVE_ADDR_IN_UTMP
+       /* this is just a 32-bit IP address */
diff --git a/secure/usr.sbin/sshd/monitor.c.patch b/secure/usr.sbin/sshd/monitor.c.patch
new file mode 100644 (file)
index 0000000..2be04cf
--- /dev/null
@@ -0,0 +1,20 @@
+$DragonFly: src/secure/usr.sbin/sshd/Attic/monitor.c.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- monitor.c.orig     2004-07-23 14:26:51.000000000 +0200
++++ monitor.c  2004-07-23 14:20:00.000000000 +0200
+@@ -30,8 +30,16 @@
+ #include <openssl/dh.h>
+ #ifdef SKEY
++#ifdef OPIE
++#include <opie.h>
++#define skey                    opie
++#define skeychallenge(k, u, c)  opiechallenge((k), (u), (c))
++#define skey_haskey(u)          opie_haskey((u))
++#define skey_passcheck(u, r)    opie_passverify((u), (r))
++#else
+ #include <skey.h>
+ #endif
++#endif
+ #include "ssh.h"
+ #include "auth.h"
diff --git a/secure/usr.sbin/sshd/monitor_wrap.c.patch b/secure/usr.sbin/sshd/monitor_wrap.c.patch
new file mode 100644 (file)
index 0000000..6295750
--- /dev/null
@@ -0,0 +1,19 @@
+$DragonFly: src/secure/usr.sbin/sshd/Attic/monitor_wrap.c.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- monitor_wrap.c.orig        2004-07-23 14:26:51.000000000 +0200
++++ monitor_wrap.c     2004-07-23 14:20:00.000000000 +0200
+@@ -914,6 +914,7 @@
+       return ((authok == 0) ? -1 : 0);
+ }
++#ifdef SKEY
+ int
+ mm_skey_query(void *ctx, char **name, char **infotxt,
+    u_int *numprompts, char ***prompts, u_int **echo_on)
+@@ -977,6 +978,7 @@
+       return ((authok == 0) ? -1 : 0);
+ }
++#endif
+ void
+ mm_ssh1_session_id(u_char session_id[16])
diff --git a/secure/usr.sbin/sshd/myproposal.h.patch b/secure/usr.sbin/sshd/myproposal.h.patch
new file mode 100644 (file)
index 0000000..586a363
--- /dev/null
@@ -0,0 +1,12 @@
+$DragonFly: src/secure/usr.sbin/sshd/Attic/myproposal.h.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- myproposal.h.orig  2004-07-23 14:26:51.000000000 +0200
++++ myproposal.h       2004-07-23 14:20:00.000000000 +0200
+@@ -24,7 +24,7 @@
+  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+  */
+ #define KEX_DEFAULT_KEX               "diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1"
+-#define       KEX_DEFAULT_PK_ALG      "ssh-rsa,ssh-dss"
++#define       KEX_DEFAULT_PK_ALG      "ssh-dss,ssh-rsa"
+ #define       KEX_DEFAULT_ENCRYPT \
+       "aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour," \
+       "aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se," \
diff --git a/secure/usr.sbin/sshd/servconf.c.patch b/secure/usr.sbin/sshd/servconf.c.patch
new file mode 100644 (file)
index 0000000..6d3aa6d
--- /dev/null
@@ -0,0 +1,69 @@
+$DragonFly: src/secure/usr.sbin/sshd/Attic/servconf.c.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- servconf.c.orig    2004-07-23 14:26:51.000000000 +0200
++++ servconf.c 2004-07-23 14:20:00.000000000 +0200
+@@ -115,7 +115,7 @@
+       /* Standard Options */
+       if (options->protocol == SSH_PROTO_UNKNOWN)
+-              options->protocol = SSH_PROTO_1|SSH_PROTO_2;
++              options->protocol = SSH_PROTO_2;
+       if (options->num_host_key_files == 0) {
+               /* fill default hostkeys for protocols */
+               if (options->protocol & SSH_PROTO_1)
+@@ -123,8 +123,6 @@
+                           _PATH_HOST_KEY_FILE;
+               if (options->protocol & SSH_PROTO_2) {
+                       options->host_key_files[options->num_host_key_files++] =
+-                          _PATH_HOST_RSA_KEY_FILE;
+-                      options->host_key_files[options->num_host_key_files++] =
+                           _PATH_HOST_DSA_KEY_FILE;
+               }
+       }
+@@ -141,7 +139,7 @@
+       if (options->key_regeneration_time == -1)
+               options->key_regeneration_time = 3600;
+       if (options->permit_root_login == PERMIT_NOT_SET)
+-              options->permit_root_login = PERMIT_YES;
++              options->permit_root_login = PERMIT_NO;
+       if (options->ignore_rhosts == -1)
+               options->ignore_rhosts = 1;
+       if (options->ignore_user_known_hosts == -1)
+@@ -151,7 +149,7 @@
+       if (options->print_lastlog == -1)
+               options->print_lastlog = 1;
+       if (options->x11_forwarding == -1)
+-              options->x11_forwarding = 0;
++              options->x11_forwarding = 1;
+       if (options->x11_display_offset == -1)
+               options->x11_display_offset = 10;
+       if (options->x11_use_localhost == -1)
+@@ -268,6 +266,7 @@
+       sClientAliveCountMax, sAuthorizedKeysFile, sAuthorizedKeysFile2,
+       sGssAuthentication, sGssCleanupCreds,
+       sUsePrivilegeSeparation,
++      sVersionAddendum,
+       sDeprecated, sUnsupported
+ } ServerOpCodes;
+@@ -366,6 +365,7 @@
+       { "authorizedkeysfile", sAuthorizedKeysFile },
+       { "authorizedkeysfile2", sAuthorizedKeysFile2 },
+       { "useprivilegeseparation", sUsePrivilegeSeparation},
++      { "versionaddendum", sVersionAddendum },
+       { NULL, sBadOption }
+ };
+@@ -892,6 +892,13 @@
+               intptr = &options->client_alive_count_max;
+               goto parse_int;
++      case sVersionAddendum:
++                ssh_version_set_addendum(strtok(cp, "\n"));
++                do {
++                        arg = strdelim(&cp);
++                } while (arg != NULL && *arg != '\0');
++              break;
++
+       case sDeprecated:
+               logit("%s line %d: Deprecated option %s",
+                   filename, linenum, arg);
diff --git a/secure/usr.sbin/sshd/session.c.patch b/secure/usr.sbin/sshd/session.c.patch
new file mode 100644 (file)
index 0000000..9ec0a89
--- /dev/null
@@ -0,0 +1,131 @@
+$DragonFly: src/secure/usr.sbin/sshd/Attic/session.c.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- session.c.orig     2004-07-23 14:26:51.000000000 +0200
++++ session.c  2004-07-23 14:20:00.000000000 +0200
+@@ -748,6 +748,24 @@
+ {
+       FILE *f;
+       char buf[256];
++#ifdef HAVE_LOGIN_CAP
++      const char *fname;
++#endif
++
++#ifdef HAVE_LOGIN_CAP
++      fname = login_getcapstr(lc, "copyright", NULL, NULL);
++      if (fname != NULL && (f = fopen(fname, "r")) != NULL) {
++              while (fgets(buf, sizeof(buf), f) != NULL)
++                      fputs(buf, stdout);
++                      fclose(f);
++      } else
++#endif /* HAVE_LOGIN_CAP */
++              (void)printf("%s\n\t%s %s\n",
++      "Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994",
++      "The Regents of the University of California. ",
++      "All rights reserved.");
++
++      (void)printf("\n");
+       if (options.print_motd) {
+ #ifdef HAVE_LOGIN_CAP
+@@ -972,6 +990,10 @@
+       char buf[256];
+       u_int i, envsize;
+       char **env, *laddr, *path = NULL;
++#ifdef HAVE_LOGIN_CAP
++      extern char **environ;
++      char **senv, **var;
++#endif
+       struct passwd *pw = s->pw;
+       /* Initialize the environment. */
+@@ -987,6 +1009,9 @@
+       copy_environment(environ, &env, &envsize);
+ #endif
++      if (getenv("TZ"))
++              child_set_env(&env, &envsize, "TZ", getenv("TZ"));
++
+ #ifdef GSSAPI
+       /* Allow any GSSAPI methods that we've used to alter
+        * the childs environment as they see fit
+@@ -1002,11 +1027,22 @@
+               child_set_env(&env, &envsize, "LOGIN", pw->pw_name);
+ #endif
+               child_set_env(&env, &envsize, "HOME", pw->pw_dir);
++              snprintf(buf, sizeof buf, "%.200s/%.50s",
++                       _PATH_MAILDIR, pw->pw_name);
++              child_set_env(&env, &envsize, "MAIL", buf);
+ #ifdef HAVE_LOGIN_CAP
+-              if (setusercontext(lc, pw, pw->pw_uid, LOGIN_SETPATH) < 0)
+-                      child_set_env(&env, &envsize, "PATH", _PATH_STDPATH);
+-              else
+-                      child_set_env(&env, &envsize, "PATH", getenv("PATH"));
++              child_set_env(&env, &envsize, "PATH", _PATH_STDPATH);
++              child_set_env(&env, &envsize, "TERM", "su");
++              senv = environ;
++              environ = xmalloc(sizeof(char *));
++              *environ = NULL;
++              (void) setusercontext(lc, pw, pw->pw_uid,
++                  LOGIN_SETENV|LOGIN_SETPATH);
++              copy_environment(environ, &env, &envsize);
++              for (var = environ; *var != NULL; ++var)
++                      xfree(*var);
++              xfree(environ);
++              environ = senv;
+ #else /* HAVE_LOGIN_CAP */
+ # ifndef HAVE_CYGWIN
+               /*
+@@ -1027,15 +1063,9 @@
+ # endif /* HAVE_CYGWIN */
+ #endif /* HAVE_LOGIN_CAP */
+-              snprintf(buf, sizeof buf, "%.200s/%.50s",
+-                       _PATH_MAILDIR, pw->pw_name);
+-              child_set_env(&env, &envsize, "MAIL", buf);
+-
+               /* Normal systems set SHELL by default. */
+               child_set_env(&env, &envsize, "SHELL", shell);
+       }
+-      if (getenv("TZ"))
+-              child_set_env(&env, &envsize, "TZ", getenv("TZ"));
+       /* Set custom environment options from RSA authentication. */
+       if (!options.use_login) {
+@@ -1255,7 +1285,7 @@
+               }
+ # endif /* USE_PAM */
+               if (setusercontext(lc, pw, pw->pw_uid,
+-                  (LOGIN_SETALL & ~LOGIN_SETPATH)) < 0) {
++                  (LOGIN_SETALL & ~(LOGIN_SETENV|LOGIN_SETPATH))) < 0) {
+                       perror("unable to set user context");
+                       exit(1);
+               }
+@@ -1391,6 +1421,9 @@
+       char *argv[10];
+       const char *shell, *shell0, *hostname = NULL;
+       struct passwd *pw = s->pw;
++#ifdef HAVE_LOGIN_CAP
++      int lc_requirehome;
++#endif
+       /* remove hostkey from the child's memory */
+       destroy_sensitive_data();
+@@ -1461,6 +1494,10 @@
+        */
+       environ = env;
++#ifdef HAVE_LOGIN_CAP
++      lc_requirehome = login_getcapbool(lc, "requirehome", 0);
++      login_close(lc);
++#endif
+ #if defined(KRB5) && defined(USE_AFS)
+       /*
+        * At this point, we check to see if AFS is active and if we have
+@@ -1492,7 +1529,7 @@
+               fprintf(stderr, "Could not chdir to home directory %s: %s\n",
+                   pw->pw_dir, strerror(errno));
+ #ifdef HAVE_LOGIN_CAP
+-              if (login_getcapbool(lc, "requirehome", 0))
++              if (lc_requirehome)
+                       exit(1);
+ #endif
+       }
diff --git a/secure/usr.sbin/sshd/sshd.8.no_obj.patch b/secure/usr.sbin/sshd/sshd.8.no_obj.patch
new file mode 100644 (file)
index 0000000..5f53309
--- /dev/null
@@ -0,0 +1,86 @@
+$DragonFly: src/secure/usr.sbin/sshd/Attic/sshd.8.no_obj.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- sshd.8.orig        2004-07-23 14:26:51.000000000 +0200
++++ sshd.8     2004-07-23 14:20:00.000000000 +0200
+@@ -67,7 +67,7 @@
+ .Nm
+ is the daemon that listens for connections from clients.
+ It is normally started at boot from
+-.Pa /etc/rc .
++.Pa /etc/rc.d/sshd .
+ It forks a new
+ daemon for each incoming connection.
+ The forked daemons handle
+@@ -253,8 +253,6 @@
+ The default is
+ .Pa /etc/ssh/ssh_host_key
+ for protocol version 1, and
+-.Pa /etc/ssh/ssh_host_rsa_key
+-and
+ .Pa /etc/ssh/ssh_host_dsa_key
+ for protocol version 2.
+ It is possible to have multiple host key files for
+@@ -365,8 +363,9 @@
+ If the login is on a tty, records login time.
+ .It
+ Checks
+-.Pa /etc/nologin ;
+-if it exists, prints contents and quits
++.Pa /etc/nologin and
++.Pa /var/run/nologin ;
++if one exists, it prints the contents and quits
+ (unless root).
+ .It
+ Changes to run with normal user privileges.
+@@ -388,11 +387,12 @@
+ exists, runs it; else if
+ .Pa /etc/ssh/sshrc
+ exists, runs
+-it; otherwise runs xauth.
++it; otherwise runs
++.Xr xauth 1 .
+ The
+ .Dq rc
+ files are given the X11
+-authentication protocol and cookie in standard input.
++authentication protocol and cookie (if applicable) in standard input.
+ .It
+ Runs user's shell or command.
+ .El
+@@ -596,15 +596,15 @@
+ .Nm sshd .
+ The file format and configuration options are described in
+ .Xr sshd_config 5 .
+-.It Pa /etc/ssh/ssh_host_key, /etc/ssh/ssh_host_dsa_key, /etc/ssh/ssh_host_rsa_key
+-These three files contain the private parts of the host keys.
++.It Pa /etc/ssh/ssh_host_key, /etc/ssh/ssh_host_dsa_key
++These two files contain the private parts of the host keys.
+ These files should only be owned by root, readable only by root, and not
+ accessible to others.
+ Note that
+ .Nm
+ does not start if this file is group/world-accessible.
+-.It Pa /etc/ssh/ssh_host_key.pub, /etc/ssh/ssh_host_dsa_key.pub, /etc/ssh/ssh_host_rsa_key.pub
+-These three files contain the public parts of the host keys.
++.It Pa /etc/ssh/ssh_host_key.pub, /etc/ssh/ssh_host_dsa_key.pub
++These two files contain the public parts of the host keys.
+ These files should be world-readable but writable only by
+ root.
+ Their contents should match the respective private parts.
+@@ -613,7 +613,7 @@
+ the user so their contents can be copied to known hosts files.
+ These files are created using
+ .Xr ssh-keygen 1 .
+-.It Pa /etc/moduli
++.It Pa /etc/ssh/moduli
+ Contains Diffie-Hellman groups used for the "Diffie-Hellman Group Exchange".
+ The file format is described in
+ .Xr moduli 5 .
+@@ -725,7 +725,7 @@
+ of is in negative entries.
+ .Pp
+ Note that this warning also applies to rsh/rlogin.
+-.It Pa /etc/shosts.equiv
++.It Pa /etc/ssh/shosts.equiv
+ This is processed exactly as
+ .Pa /etc/hosts.equiv .
+ However, this file may be useful in environments that want to run both
diff --git a/secure/usr.sbin/sshd/sshd.c.patch b/secure/usr.sbin/sshd/sshd.c.patch
new file mode 100644 (file)
index 0000000..6d6d960
--- /dev/null
@@ -0,0 +1,32 @@
+$DragonFly: src/secure/usr.sbin/sshd/Attic/sshd.c.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- sshd.c.orig        2004-07-23 14:26:51.000000000 +0200
++++ sshd.c     2004-07-23 14:20:00.000000000 +0200
+@@ -53,6 +53,10 @@
+ #include <prot.h>
+ #endif
++#ifdef __DragonFly__
++#include <resolv.h>
++#endif
++
+ #include "ssh.h"
+ #include "ssh1.h"
+ #include "ssh2.h"
+@@ -1415,6 +1419,17 @@
+           sizeof(on)) < 0)
+               error("setsockopt SO_KEEPALIVE: %.100s", strerror(errno));
++#ifdef __DragonFly__
++      /*
++       * Initialize the resolver.  This may not happen automatically
++       * before privsep chroot().                                   
++       */
++      if ((_res.options & RES_INIT) == 0) {
++              debug("res_init()");         
++              res_init();         
++      }
++#endif
++
+       /*
+        * Register our connection.  This turns encryption off because we do
+        * not have a key.
diff --git a/secure/usr.sbin/sshd/sshd_config.5.no_obj.patch b/secure/usr.sbin/sshd/sshd_config.5.no_obj.patch
new file mode 100644 (file)
index 0000000..5f62afd
--- /dev/null
@@ -0,0 +1,121 @@
+$DragonFly: src/secure/usr.sbin/sshd/Attic/sshd_config.5.no_obj.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- sshd_config.5.orig 2004-07-23 14:26:51.000000000 +0200
++++ sshd_config.5      2004-07-23 14:26:49.000000000 +0200
+@@ -122,10 +122,17 @@
+ By default, no banner is displayed.
+ .Pp
+ .It Cm ChallengeResponseAuthentication
+-Specifies whether challenge response authentication is allowed.
+-All authentication styles from
+-.Xr login.conf 5
+-are supported.
++Specifies whether challenge-response authentication is allowed.
++Specifically, in
++.Fx ,
++this controls the use of PAM (see
++.Xr pam 3 )
++for authentication.
++Note that this affects the effectiveness of the
++.Cm PasswordAuthentication
++and
++.Cm PermitRootLogin
++variables.
+ The default is
+ .Dq yes .
+ .It Cm Ciphers
+@@ -251,8 +258,6 @@
+ The default is
+ .Pa /etc/ssh/ssh_host_key
+ for protocol version 1, and
+-.Pa /etc/ssh/ssh_host_rsa_key
+-and
+ .Pa /etc/ssh/ssh_host_dsa_key
+ for protocol version 2.
+ Note that
+@@ -277,7 +282,7 @@
+ .Pp
+ .Pa /etc/hosts.equiv
+ and
+-.Pa /etc/shosts.equiv
++.Pa /etc/ssh/shosts.equiv 
+ are still used.
+ The default is
+ .Dq yes .
+@@ -415,6 +420,20 @@
+ Specifies whether password authentication is allowed.
+ The default is
+ .Dq yes .
++Note that if
++.Cm ChallengeResponseAuthentication
++is
++.Dq yes ,
++.Cm UsePAM
++is
++.Dq yes ,
++and the PAM authentication policy for
++.Nm sshd
++includes
++.Xr pam_unix 8 ,
++password authentication will be allowed through the challenge-response
++mechanism regardless of the value of
++.Cm PasswordAuthentication .
+ .It Cm PermitEmptyPasswords
+ When password authentication is allowed, it specifies whether the
+ server allows login to accounts with empty password strings.
+@@ -430,7 +449,14 @@
+ or
+ .Dq no .
+ The default is
+-.Dq yes .
++.Dq no .
++Note that if
++.Cm ChallengeResponseAuthentication
++is
++.Dq yes ,
++the root user may be allowed in with its password even if
++.Cm PermitRootLogin is set to
++.Dq without-password .
+ .Pp
+ If this option is set to
+ .Dq without-password
+@@ -506,7 +532,7 @@
+ .Dq 2 .
+ Multiple versions must be comma-separated.
+ The default is
+-.Dq 2,1 .
++.Dq 2 .
+ Note that the order of the protocol list does not indicate preference,
+ because the client selects among multiple protocol versions offered
+ by the server.
+@@ -520,7 +546,9 @@
+ .Dq yes .
+ Note that this option applies to protocol version 2 only.
+ .It Cm RhostsRSAAuthentication
+-Specifies whether rhosts or /etc/hosts.equiv authentication together
++Specifies whether rhosts or
++.Pa /etc/hosts.equiv
++authentication together
+ with successful RSA host authentication is allowed.
+ The default is
+ .Dq no .
+@@ -626,6 +654,11 @@
+ escalation by containing any corruption within the unprivileged processes.
+ The default is
+ .Dq yes .
++.It Cm VersionAddendum
++Specifies a string to append to the regular version string to identify
++OS- or site-specific modifications.
++The default is
++.Dq DragonFly-20040710 .
+ .It Cm X11DisplayOffset
+ Specifies the first display number available for
+ .Nm sshd Ns 's
+@@ -641,7 +674,7 @@
+ or
+ .Dq no .
+ The default is
+-.Dq no .
++.Dq yes .
+ .Pp
+ When X11 forwarding is enabled, there may be additional exposure to
+ the server and to client displays if the
diff --git a/secure/usr.sbin/sshd/sshd_config.no_obj.patch b/secure/usr.sbin/sshd/sshd_config.no_obj.patch
new file mode 100644 (file)
index 0000000..4a65f75
--- /dev/null
@@ -0,0 +1,52 @@
+$DragonFly: src/secure/usr.sbin/sshd/Attic/sshd_config.no_obj.patch,v 1.1 2004/07/31 20:05:00 geekgod Exp $
+--- sshd_config.orig   2004-07-23 14:26:51.000000000 +0200
++++ sshd_config        2004-07-23 14:25:05.000000000 +0200
+@@ -10,15 +10,19 @@
+ # possible, but leave them commented.  Uncommented options change a
+ # default value.
++# Note that some of DragonFly's defaults differ from OpenBSD's, and
++# DragonFly has a few additional options.
++
++#VersionAddendum DragonFly-20040710
++
+ #Port 22
+-#Protocol 2,1
++#Protocol 2
+ #ListenAddress 0.0.0.0
+ #ListenAddress ::
+ # HostKey for protocol version 1
+ #HostKey /etc/ssh/ssh_host_key
+ # HostKeys for protocol version 2
+-#HostKey /etc/ssh/ssh_host_rsa_key
+ #HostKey /etc/ssh/ssh_host_dsa_key
+ # Lifetime and size of ephemeral version 1 server key
+@@ -33,7 +37,7 @@
+ # Authentication:
+ #LoginGraceTime 2m
+-#PermitRootLogin yes
++#PermitRootLogin no
+ #StrictModes yes
+ #RSAAuthentication yes
+@@ -54,7 +58,7 @@
+ #PasswordAuthentication yes
+ #PermitEmptyPasswords no
+-# Change to no to disable s/key passwords
++# Change to no to disable OPIE and PAM authentication
+ #ChallengeResponseAuthentication yes
+ # Kerberos options
+@@ -74,7 +78,7 @@
+ #AllowTcpForwarding yes
+ #GatewayPorts no
+-#X11Forwarding no
++#X11Forwarding yes
+ #X11DisplayOffset 10
+ #X11UseLocalhost yes
+ #PrintMotd yes