]> andersk Git - gssapi-openssh.git/commitdiff
Import of OpenSSH 3.7.1p2 OPENSSH_3_7_1P2
authorjbasney <jbasney>
Wed, 12 Nov 2003 02:45:42 +0000 (02:45 +0000)
committerjbasney <jbasney>
Wed, 12 Nov 2003 02:45:42 +0000 (02:45 +0000)
35 files changed:
openssh/ChangeLog
openssh/INSTALL
openssh/Makefile.in
openssh/auth-chall.c
openssh/auth-pam.c
openssh/auth-passwd.c
openssh/buffer.c
openssh/cipher-3des1.c
openssh/cipher-aes.c
openssh/cipher-bf1.c
openssh/cipher-ctr.c
openssh/cipher.c
openssh/configure.ac
openssh/contrib/aix/pam.conf [new file with mode: 0644]
openssh/contrib/caldera/openssh.spec
openssh/contrib/cygwin/README
openssh/contrib/cygwin/ssh-host-config
openssh/contrib/redhat/openssh.spec
openssh/contrib/suse/openssh.spec
openssh/deattack.c
openssh/log.c
openssh/misc.c
openssh/openbsd-compat/fake-rfc2553.c
openssh/openbsd-compat/fake-rfc2553.h
openssh/openbsd-compat/inet_ntoa.c
openssh/openbsd-compat/port-aix.c
openssh/openbsd-compat/port-aix.h
openssh/packet.c
openssh/servconf.c
openssh/session.c
openssh/sftp-int.c
openssh/ssh-agent.c
openssh/sshconnect.c
openssh/uidswap.c
openssh/version.h

index 52b26b33b353fabea582af5927a1c73b4cd23834..933d795ef59b4393a83a6ab55c3a4c7d9f9980e0 100644 (file)
@@ -1,3 +1,76 @@
+20030923
+ - (dtucker) OpenBSD CVS Sync
+   - markus@cvs.openbsd.org 2003/09/18 07:52:54
+     [sshconnect.c]
+     missing {}; bug #656; jclonguet at free.fr
+   - markus@cvs.openbsd.org 2003/09/18 07:54:48
+     [buffer.c]
+     protect against double free; #660;  zardoz at users.sf.net
+   - markus@cvs.openbsd.org 2003/09/18 08:49:45
+     [deattack.c misc.c session.c ssh-agent.c]
+     more buffer allocation fixes; from Solar Designer; CAN-2003-0682;
+     ok millert@
+   - markus@cvs.openbsd.org 2003/09/19 09:02:02
+     [packet.c]
+     buffer_dump only if PACKET_DEBUG is defined; Jedi/Sector One; pr 3471
+ - (djm) Fix SSH1 challenge kludge
+ - (djm) Bug #671: Fix builds on OpenBSD
+ - (djm) Bug #676: Fix PAM stack corruption
+ - (djm) Fix bad free() in PAM code
+ - (djm) Don't call pam_end before pam_init
+ - (djm) Enable build with old OpenSSL again
+ - (djm) Trim deprecated options from INSTALL. Mention UsePAM
+ - (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu
+ - (djm) Crank version.h and spec version numbers
+ - (djm) Release 3.7.1p2
+
+20030922
+ - (dtucker) [Makefile.in] Bug #644: Fix "make clean" for out-of-tree
+   builds.  Portability corrections from tim@.
+ - (dtucker) [configure.ac] Bug #665: uid swapping issues on Mac OS X.
+   Patch from max at quendi.de.
+ - (dtucker) [configure.ac] Bug #657: uid swapping issues on BSDi.
+ - (dtucker) [configure.ac] Bug #653: uid swapping issues on Tru64.
+ - (dtucker) [configure.ac] Bug #693: uid swapping issues on NCR MP-RAS.
+   Patch from david.haughton at ncr.com
+ - (dtucker) [configure.ac] Bug #659: uid swapping issues on IRIX 6.
+   Part of patch supplied by bugzilla-openssh at thewrittenword.com
+ - (dtucker) [configure.ac openbsd-compat/fake-rfc2553.c
+   openbsd-compat/fake-rfc2553.h] Bug #659: Test for and handle systems with
+   where gai_strerror is defined as "const char *".  Part of patch supplied
+   by bugzilla-openssh at thewrittenword.com
+ - (dtucker) [contrib/cygwin/README contrib/cygwin/ssh-host-config] Update
+   ssh-host-config to match current defaults, bump README version.  Patch from
+   vinschen at redhat.com.
+ - (dtucker) [uidswap.c] Don't test restoration of uid on Cygwin since the
+   OS does not support permanently dropping privileges.  Patch from
+   vinschen at redhat.com.
+ - (dtucker) [openbsd-compat/port-aix.c] Use correct include for xmalloc.h,
+   add canohost.h to stop warning.  Based on patch from openssh-unix-dev at
+   thewrittenword.com
+ - (dtucker) [INSTALL] Bug #686: Document requirement for zlib 1.1.4 or
+   higher.
+ - (tim) Fix typo. s/SETEIUD_BREAKS_SETUID/SETEUID_BREAKS_SETUID/
+ - (tim) [configure.ac] Bug 665: move 3 new AC_DEFINES outside of AC_TRY_RUN.
+   Report by distler AT golem ph utexas edu.
+ - (dtucker) [contrib/aix/pam.conf] Include example pam.conf for AIX from
+   article by genty at austin.ibm.com, included with the author's permission.
+ - (tim) [configure.ac] add --disable-etc-default-login option. ok djm
+
+20030919
+ - (djm) Bug #683: Remove reference to --with-ipv4-default from INSTALL;
+   djast AT cs.toronto.edu
+ - (djm) Bug #680: Remove missing inet_ntoa.h header reference
+ - (djm) Bug #646: Fix location of x11-ssh-askpass; Jim
+ - (dtucker) [openbsd-compat/port-aix.h] Bug #640: Don't include audit.h
+   unless required.  Reorder to reduce warnings.
+ - (dtucker) [session.c] Bug #643: Fix size_t -> u_int and fix null deref
+   when /etc/default/login doesn't exist or isn't readable.  Fixes from
+   jparsons-lists at saffron.net and georg.oppenberg at deu mci com.
+
+20030918
+ - (djm) Bug #652: Fix empty password auth
+
 20030917
  - (djm) OpenBSD Sync
    - markus@cvs.openbsd.org 2003/09/16 21:02:40
index 846e388131b17cf092b8c34f394ba59e60ae05fe..835f8be82ec196b44016ca64120854b5b60c0c09 100644 (file)
@@ -3,7 +3,7 @@
 
 You will need working installations of Zlib and OpenSSL.
 
-Zlib:
+Zlib 1.1.4 or greater:
 http://www.gzip.org/zlib/ 
 
 OpenSSL 0.9.6 or greater:
@@ -33,7 +33,7 @@ http://www.gnome.org/
 Alternatively, Jim Knoble <jmknoble@jmknoble.cx> has written an excellent X11
 passphrase requester. This is maintained separately at:
 
-http://www.ntrnet.net/~jmknoble/software/x11-ssh-askpass/index.html
+http://www.jmknoble.net/software/x11-ssh-askpass/
 
 PRNGD:
 
@@ -101,11 +101,8 @@ name).
 
 There are a few other options to the configure script:
 
---with-pam enables PAM support.
-
---enable-gnome-askpass will build the GNOME passphrase dialog. You
-need a working installation of GNOME, including the development
-headers, for this to work.
+--with-pam enables PAM support. If PAM support is compiled in, it must
+also be enabled in sshd_config (refer to the UsePAM directive).
 
 --with-prngd-socket=/some/file allows you to enable EGD or PRNGD 
 support and to specify a PRNGd socket. Use this if your Unix lacks 
@@ -126,16 +123,6 @@ it if lastlog is installed in a different place.
 --with-osfsia, --without-osfsia will enable or disable OSF1's Security 
 Integration Architecture.  The default for OSF1 machines is enable.
 
---with-kerberos4=PATH will enable Kerberos IV support. You will need
-to have the Kerberos libraries and header files installed for this
-to work. Use the optional PATH argument to specify the root of your
-Kerberos installation.
-
---with-afs=PATH will enable AFS support. You will need to have the
-Kerberos IV and the AFS libraries and header files installed for this
-to work.  Use the optional PATH argument to specify the root of your
-AFS installation. AFS requires Kerberos support to be enabled.
-
 --with-skey=PATH will enable S/Key one time password support. You will 
 need the S/Key libraries and header files installed for this to work.
 
@@ -161,12 +148,6 @@ created.
 
 --with-xauth=PATH specifies the location of the xauth binary
 
---with-ipv4-default instructs OpenSSH to use IPv4 by default for new
-connections. Normally OpenSSH will try attempt to lookup both IPv6 and
-IPv4 addresses. On Linux/glibc-2.1.2 this causes long delays in name
-resolution. If this option is specified, you can still attempt to 
-connect to IPv6 addresses using the command line option '-6'.
-
 --with-ssl-dir=DIR allows you to specify where your OpenSSL libraries
 are installed.
 
index 82a9836e182ae715b7a7e6c801e9fc914342d1a3..d04d5d0439f3fe50367754a01d9b4c76b264d925 100644 (file)
@@ -192,20 +192,18 @@ ssh_prng_cmds.out:        ssh_prng_cmds
 moduli:
        echo
 
-clean:
+clean: regressclean
        rm -f *.o *.a $(TARGETS) logintest config.cache config.log 
        rm -f *.out core 
        (cd openbsd-compat && $(MAKE) clean)
-       (cd regress && $(MAKE) clean)
 
-distclean:
+distclean:     regressclean
        rm -f *.o *.a $(TARGETS) logintest config.cache config.log 
        rm -f *.out core
        rm -f Makefile config.h config.status ssh_prng_cmds *~
        rm -rf autom4te.cache
        (cd openbsd-compat && $(MAKE) distclean)
        (cd scard && $(MAKE) distclean)
-       (cd regress && $(MAKE) distclean)
 
 veryclean: distclean
        rm -f configure config.h.in *.0
@@ -373,6 +371,8 @@ uninstall:
 tests: $(TARGETS)
        BUILDDIR=`pwd`; \
        [ -d `pwd`/regress ]  ||  mkdir -p `pwd`/regress; \
+       [ -f `pwd`/regress/Makefile ]  || \
+           ln -s $(srcdir)/regress/Makefile `pwd`/regress/Makefile ; \
        TEST_SSH_SSH="$${BUILDDIR}/ssh"; \
        TEST_SSH_SSHD="$${BUILDDIR}/sshd"; \
        TEST_SSH_SSHAGENT="$${BUILDDIR}/ssh-agent"; \
@@ -398,3 +398,8 @@ tests:      $(TARGETS)
                TEST_SSH_SFTPSERVER="$${TEST_SSH_SFTPSERVER}" \
                EXEEXT="$(EXEEXT)" \
                $@
+
+regressclean:
+       if [ -f regress/Makefile -a -r regress/Makefile ]; then \
+               (cd regress && $(MAKE) clean) \
+       fi
index 6b7c8bd13ba3793c8e23fc584059c45cba894e3e..00d6e0ec5a7628a73c6847997f116d1a5d41fda1 100644 (file)
@@ -92,7 +92,7 @@ verify_response(Authctxt *authctxt, const char *response)
                        xfree(info);
                }
                /* if we received more prompts, we're screwed */
-               res = (numprompts != 0);
+               res = (res == 0 && numprompts == 0) ? 0 : -1;
        }
        device->free_ctx(authctxt->kbdintctxt);
        authctxt->kbdintctxt = NULL;
index bc1af4663a007ec84ca2deedbcd2998ea962dbdf..6d55b758f55a23e9a50d301fa030272b2c47b86c 100644 (file)
@@ -111,12 +111,12 @@ pthread_join(sp_pthread_t thread, void **value __unused)
 #endif
 
 
-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;
+static pam_handle_t *sshpam_handle = NULL;
+static int sshpam_err = 0;
+static int sshpam_authenticated = 0;
+static int sshpam_new_authtok_reqd = 0;
+static int sshpam_session_open = 0;
+static int sshpam_cred_established = 0;
 
 struct pam_ctxt {
        sp_pthread_t     pam_thread;
@@ -136,42 +136,51 @@ sshpam_thread_conv(int n, const struct pam_message **msg,
 {
        Buffer buffer;
        struct pam_ctxt *ctxt;
+       struct pam_response *reply;
        int i;
 
+       *resp = NULL;
+
        ctxt = data;
        if (n <= 0 || n > PAM_MAX_NUM_MSG)
                return (PAM_CONV_ERR);
-       *resp = xmalloc(n * sizeof **resp);
+
+       if ((reply = malloc(n * sizeof(*reply))) == NULL)
+               return (PAM_CONV_ERR);
+       memset(reply, 0, n * sizeof(*reply));
+
        buffer_init(&buffer);
        for (i = 0; i < n; ++i) {
-               resp[i]->resp_retcode = 0;
-               resp[i]->resp = NULL;
                switch (PAM_MSG_MEMBER(msg, i, msg_style)) {
                case PAM_PROMPT_ECHO_OFF:
-                       buffer_put_cstring(&buffer, PAM_MSG_MEMBER(msg, i, msg));
+                       buffer_put_cstring(&buffer, 
+                           PAM_MSG_MEMBER(msg, i, msg));
                        ssh_msg_send(ctxt->pam_csock, 
                            PAM_MSG_MEMBER(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);
+                       reply[i].resp = buffer_get_string(&buffer, NULL);
                        break;
                case PAM_PROMPT_ECHO_ON:
-                       buffer_put_cstring(&buffer, PAM_MSG_MEMBER(msg, i, msg));
+                       buffer_put_cstring(&buffer, 
+                           PAM_MSG_MEMBER(msg, i, msg));
                        ssh_msg_send(ctxt->pam_csock, 
                            PAM_MSG_MEMBER(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);
+                       reply[i].resp = buffer_get_string(&buffer, NULL);
                        break;
                case PAM_ERROR_MSG:
-                       buffer_put_cstring(&buffer, PAM_MSG_MEMBER(msg, i, msg));
+                       buffer_put_cstring(&buffer, 
+                           PAM_MSG_MEMBER(msg, i, msg));
                        ssh_msg_send(ctxt->pam_csock, 
                            PAM_MSG_MEMBER(msg, i, msg_style), &buffer);
                        break;
                case PAM_TEXT_INFO:
-                       buffer_put_cstring(&buffer, PAM_MSG_MEMBER(msg, i, msg));
+                       buffer_put_cstring(&buffer, 
+                           PAM_MSG_MEMBER(msg, i, msg));
                        ssh_msg_send(ctxt->pam_csock, 
                            PAM_MSG_MEMBER(msg, i, msg_style), &buffer);
                        break;
@@ -181,12 +190,15 @@ sshpam_thread_conv(int n, const struct pam_message **msg,
                buffer_clear(&buffer);
        }
        buffer_free(&buffer);
+       *resp = reply;
        return (PAM_SUCCESS);
+
  fail:
-       while (i)
-               xfree(resp[--i]);
-       xfree(*resp);
-       *resp = NULL;
+       for(i = 0; i < n; i++) {
+               if (reply[i].resp != NULL)
+                       xfree(reply[i].resp);
+       }
+       xfree(reply);
        buffer_free(&buffer);
        return (PAM_CONV_ERR);
 }
@@ -258,6 +270,8 @@ sshpam_cleanup(void *arg)
 {
        (void)arg;
        debug("PAM: cleanup");
+       if (sshpam_handle == NULL)
+               return;
        pam_set_item(sshpam_handle, PAM_CONV, (const void *)&null_conv);
        if (sshpam_cred_established) {
                pam_setcred(sshpam_handle, PAM_DELETE_CRED);
@@ -600,40 +614,50 @@ pam_chauthtok_conv(int n, const struct pam_message **msg,
     struct pam_response **resp, void *data)
 {
        char input[PAM_MAX_MSG_SIZE];
+       struct pam_response *reply;
        int i;
 
+       *resp = NULL;
+
        if (n <= 0 || n > PAM_MAX_NUM_MSG)
                return (PAM_CONV_ERR);
-       *resp = xmalloc(n * sizeof **resp);
+
+       if ((reply = malloc(n * sizeof(*reply))) == NULL)
+               return (PAM_CONV_ERR);
+       memset(reply, 0, n * sizeof(*reply));
+
        for (i = 0; i < n; ++i) {
                switch (PAM_MSG_MEMBER(msg, i, msg_style)) {
                case PAM_PROMPT_ECHO_OFF:
-                       resp[i]->resp =
+                       reply[i].resp =
                            read_passphrase(PAM_MSG_MEMBER(msg, i, msg), 
                            RP_ALLOW_STDIN);
-                       resp[i]->resp_retcode = PAM_SUCCESS;
+                       reply[i].resp_retcode = PAM_SUCCESS;
                        break;
                case PAM_PROMPT_ECHO_ON:
                        fputs(PAM_MSG_MEMBER(msg, i, msg), stderr);
                        fgets(input, sizeof input, stdin);
-                       resp[i]->resp = xstrdup(input);
-                       resp[i]->resp_retcode = PAM_SUCCESS;
+                       reply[i].resp = xstrdup(input);
+                       reply[i].resp_retcode = PAM_SUCCESS;
                        break;
                case PAM_ERROR_MSG:
                case PAM_TEXT_INFO:
                        fputs(PAM_MSG_MEMBER(msg, i, msg), stderr);
-                       resp[i]->resp_retcode = PAM_SUCCESS;
+                       reply[i].resp_retcode = PAM_SUCCESS;
                        break;
                default:
                        goto fail;
                }
        }
+       *resp = reply;
        return (PAM_SUCCESS);
+
  fail:
-       while (i)
-               xfree(resp[--i]);
-       xfree(*resp);
-       *resp = NULL;
+       for(i = 0; i < n; i++) {
+               if (reply[i].resp != NULL)
+                       xfree(reply[i].resp);
+       }
+       xfree(reply);
        return (PAM_CONV_ERR);
 }
 
index 95cc134de9eef28624ae562993327e0e4f299361..971c7ba19d9be09cc4efdd1d37f0c9dfc6c13f53 100644 (file)
@@ -143,7 +143,7 @@ auth_password(Authctxt *authctxt, const char *password)
        char *pw_password = authctxt->valid ? shadow_pw(pw) : pw->pw_passwd;
 
        /* Check for users with no password. */
-       if (strcmp(pw_password, "") == 0 && strcmp(pw->pw_passwd, "") == 0)
+       if (strcmp(pw_password, "") == 0 && strcmp(password, "") == 0)
                return ok;
        else {
                /* Encrypt the candidate password using the proper salt. */
index aee293f8bd4092bc2c0020bc4170faadb8dcb057..a80880bb923dfedd1b9b6dec446c09b5f12b44da 100644 (file)
@@ -12,7 +12,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: buffer.c,v 1.18 2003/09/16 21:02:39 markus Exp $");
+RCSID("$OpenBSD: buffer.c,v 1.19 2003/09/18 07:54:48 markus Exp $");
 
 #include "xmalloc.h"
 #include "buffer.h"
@@ -39,6 +39,7 @@ buffer_free(Buffer *buffer)
 {
        if (buffer->alloc > 0) {
                memset(buffer->buf, 0, buffer->alloc);
+               buffer->alloc = 0;
                xfree(buffer->buf);
        }
 }
index f9a3523979c53df43daa155f08e22399110c40a1..6f9f5dd6b5d48b405b185e38af9aa7d466baf258 100644 (file)
@@ -29,6 +29,10 @@ RCSID("$OpenBSD: cipher-3des1.c,v 1.1 2003/05/15 03:08:29 markus Exp $");
 #include "xmalloc.h"
 #include "log.h"
 
+#if OPENSSL_VERSION_NUMBER < 0x00906000L
+#define SSH_OLD_EVP
+#endif
+
 /*
  * This is used by SSH1:
  *
index c41def600ca0108e925dde1946396e8fca96abb7..7ba950191169cad64fa8cbc6aa3463bd3f7d6fde 100644 (file)
@@ -31,6 +31,10 @@ RCSID("$OpenBSD: cipher-aes.c,v 1.1 2003/05/15 03:08:29 markus Exp $");
 #include "xmalloc.h"
 #include "log.h"
 
+#if OPENSSL_VERSION_NUMBER < 0x00906000L
+#define SSH_OLD_EVP
+#endif
+
 #define RIJNDAEL_BLOCKSIZE 16
 struct ssh_rijndael_ctx
 {
index 64578bae87dcb34e19508059584d3cadc672df09..5af695c1740623a5b4f74efd78b0acd979104f0e 100644 (file)
@@ -28,6 +28,11 @@ RCSID("$OpenBSD: cipher-bf1.c,v 1.1 2003/05/15 03:08:29 markus Exp $");
 #include <openssl/evp.h>
 #include "xmalloc.h"
 #include "log.h"
+
+#if OPENSSL_VERSION_NUMBER < 0x00906000L
+#define SSH_OLD_EVP
+#endif
+
 /*
  * SSH1 uses a variation on Blowfish, all bytes must be swapped before
  * and after encryption/decryption. Thus the swap_bytes stuff (yuk).
index a2bab5c14416780db335bab6b3074649a2b6a070..4f0814b22d285432d43bfead9c10237ed88a0615 100644 (file)
@@ -21,6 +21,10 @@ RCSID("$OpenBSD: cipher-ctr.c,v 1.2 2003/06/17 18:14:23 markus Exp $");
 #include "log.h"
 #include "xmalloc.h"
 
+#if OPENSSL_VERSION_NUMBER < 0x00906000L
+#define SSH_OLD_EVP
+#endif
+
 #if OPENSSL_VERSION_NUMBER < 0x00907000L
 #include "rijndael.h"
 #define AES_KEY rijndael_ctx
@@ -135,7 +139,9 @@ evp_aes_128_ctr(void)
        aes_ctr.init = ssh_aes_ctr_init;
        aes_ctr.cleanup = ssh_aes_ctr_cleanup;
        aes_ctr.do_cipher = ssh_aes_ctr;
+#ifndef SSH_OLD_EVP
        aes_ctr.flags = EVP_CIPH_CBC_MODE | EVP_CIPH_VARIABLE_LENGTH |
            EVP_CIPH_ALWAYS_CALL_INIT | EVP_CIPH_CUSTOM_IV;
+#endif
        return (&aes_ctr);
 }
index e7c3c5411e3d6d821c52b6b9aa410cae3ff16ed0..ce533670b85a10220eb2b52f0625942ed9f3adc7 100644 (file)
@@ -87,9 +87,11 @@ struct Cipher {
        { "rijndael-cbc@lysator.liu.se",
                                SSH_CIPHER_SSH2, 16, 32, EVP_aes_256_cbc },
 #endif
+#if OPENSSL_VERSION_NUMBER >= 0x00906000L
        { "aes128-ctr",         SSH_CIPHER_SSH2, 16, 16, evp_aes_128_ctr },
        { "aes192-ctr",         SSH_CIPHER_SSH2, 16, 24, evp_aes_128_ctr },
        { "aes256-ctr",         SSH_CIPHER_SSH2, 16, 32, evp_aes_128_ctr },
+#endif
 
        { NULL,                 SSH_CIPHER_ILLEGAL, 0, 0, NULL }
 };
index 95cf8948278b6cf29193c2666fbc64376c881e1e..b6a8b167944ef4813b3b53df3d64c42be3064732 100644 (file)
@@ -132,6 +132,9 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
        [AC_MSG_RESULT(buggy)
        AC_DEFINE(BROKEN_GETADDRINFO)],
        [AC_MSG_RESULT(assume it is working)])
+       AC_DEFINE(SETEUID_BREAKS_SETUID)
+       AC_DEFINE(BROKEN_SETREUID)
+       AC_DEFINE(BROKEN_SETREGID)
        ;;
 *-*-hpux10.26)
        if test -z "$GCC"; then
@@ -198,6 +201,9 @@ main() { if (NSVersionOfRunTimeLibrary("System") >= (60 << 16))
        AC_DEFINE(WITH_IRIX_AUDIT)
        AC_CHECK_FUNC(jlimit_startjob, [AC_DEFINE(WITH_IRIX_JOBS)])
        AC_DEFINE(BROKEN_INET_NTOA)
+       AC_DEFINE(SETEUID_BREAKS_SETUID)
+       AC_DEFINE(BROKEN_SETREUID)
+       AC_DEFINE(BROKEN_SETREGID)
        AC_DEFINE(WITH_ABBREV_NO_TTY)
        AC_DEFINE(LOCKED_PASSWD_STRING, "*LK*")
        ;;
@@ -227,6 +233,11 @@ mips-sony-bsd|mips-sony-newsos4)
 *-*-freebsd*)
        check_for_libcrypt_later=1
        ;;
+*-*-bsdi*)
+       AC_DEFINE(SETEUID_BREAKS_SETUID)
+       AC_DEFINE(BROKEN_SETREUID)
+       AC_DEFINE(BROKEN_SETREGID)
+       ;;
 *-next-*)
        conf_lastlog_location="/usr/adm/lastlog"
        conf_utmp_location=/etc/utmp
@@ -278,6 +289,9 @@ mips-sony-bsd|mips-sony-newsos4)
        LIBS="$LIBS -lc89"
        AC_DEFINE(USE_PIPES)
        AC_DEFINE(SSHD_ACQUIRES_CTTY)
+       AC_DEFINE(SETEUID_BREAKS_SETUID)
+       AC_DEFINE(BROKEN_SETREUID)
+       AC_DEFINE(BROKEN_SETREGID)
        ;;
 *-sni-sysv*)
        CPPFLAGS="$CPPFLAGS -I/usr/local/include"
@@ -395,6 +409,9 @@ mips-sony-bsd|mips-sony-newsos4)
        fi
        AC_DEFINE(DISABLE_FD_PASSING)
        AC_DEFINE(BROKEN_GETADDRINFO)
+       AC_DEFINE(SETEUID_BREAKS_SETUID)
+       AC_DEFINE(BROKEN_SETREUID)
+       AC_DEFINE(BROKEN_SETREGID)
        AC_DEFINE(LOCKED_PASSWD_SUBSTR, "Nologin")
        ;;
 
@@ -463,7 +480,7 @@ AC_CHECK_HEADERS(bstring.h crypt.h endian.h features.h floatingpoint.h \
        sys/cdefs.h sys/mman.h sys/pstat.h sys/select.h sys/stat.h \
        sys/stropts.h sys/sysmacros.h sys/time.h sys/timers.h \
        sys/un.h time.h tmpdir.h ttyent.h usersec.h \
-       util.h utime.h utmp.h utmpx.h)
+       util.h utime.h utmp.h utmpx.h vis.h)
 
 # Checks for libraries.
 AC_CHECK_FUNC(yp_match, , AC_CHECK_LIB(nsl, yp_match))
@@ -714,7 +731,7 @@ dnl    Checks for library functions. Please keep in alphabetical order
 AC_CHECK_FUNCS(\
        arc4random __b64_ntop b64_ntop __b64_pton b64_pton basename \
        bcopy bindresvport_sa clock fchmod fchown freeaddrinfo futimes \
-       gai_strerror getaddrinfo getcwd getgrouplist getnameinfo getopt \
+       getaddrinfo getcwd getgrouplist getnameinfo getopt \
        getpeereid _getpty getrlimit getttyent glob inet_aton \
        inet_ntoa inet_ntop innetgr login_getcapbool md5_crypt memmove \
        mkdtemp mmap ngetaddrinfo nsleep ogetaddrinfo openlog_r openpty \
@@ -726,6 +743,21 @@ AC_CHECK_FUNCS(\
        truncate utimes vhangup vsnprintf waitpid \
 )
 
+# IRIX has a const char return value for gai_strerror()
+AC_CHECK_FUNCS(gai_strerror,[
+       AC_DEFINE(HAVE_GAI_STRERROR)
+       AC_TRY_COMPILE([
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+
+const char *gai_strerror(int);],[
+char *str;
+
+str = gai_strerror(0);],[
+               AC_DEFINE(HAVE_CONST_GAI_STRERROR_PROTO, 1,
+               [Define if gai_strerror() returns const char *])])])
+
 AC_SEARCH_LIBS(nanosleep, rt posix4, AC_DEFINE(HAVE_NANOSLEEP))
 
 dnl Make sure prototypes are defined for these before using them.
@@ -2183,11 +2215,15 @@ else
 fi
 
 # check for /etc/default/login and use it if present.
+AC_ARG_ENABLE(etc-default-login,
+       [  --disable-etc-default-login       Disable using PATH from /etc/default/login [no]],,
+[
 AC_CHECK_FILE("/etc/default/login", [ external_path_file=/etc/default/login ])
 
 if test "x$external_path_file" = "x/etc/default/login"; then
        AC_DEFINE(HAVE_ETC_DEFAULT_LOGIN)
 fi
+])
 
 dnl BSD systems use /etc/login.conf so --with-default-path= has no effect
 if test $ac_cv_func_login_getcapbool = "yes" -a \
diff --git a/openssh/contrib/aix/pam.conf b/openssh/contrib/aix/pam.conf
new file mode 100644 (file)
index 0000000..1495f43
--- /dev/null
@@ -0,0 +1,20 @@
+#
+# PAM configuration file /etc/pam.conf
+# Example for OpenSSH on AIX 5.2
+#
+
+# Authentication Management
+sshd    auth            required        /usr/lib/security/pam_aix
+OTHER   auth            required        /usr/lib/security/pam_aix
+
+# Account Management
+sshd    account         required        /usr/lib/security/pam_aix
+OTHER   account         required        /usr/lib/security/pam_aix
+
+# Session Management
+sshd    password        required        /usr/lib/security/pam_aix
+OTHER   password        required        /usr/lib/security/pam_aix
+
+# Password Management
+sshd    session         required        /usr/lib/security/pam_aix
+OTHER   session         required        /usr/lib/security/pam_aix
index c486cc6a34b778342f202ee379ceb74242bde5ca..d39d5b73cafdc9de8bf0f69d9c08c26a2eb841b9 100644 (file)
@@ -17,7 +17,7 @@
 #old cvs stuff.  please update before use.  may be deprecated.
 %define use_stable     1
 %if %{use_stable}
-  %define version      3.7.1p1
+  %define version      3.7.1p2
   %define cvs          %{nil}
   %define release      1
 %else
index 71ea3455fa8be4a728f076674d0456786e6990a5..ec58964c9fdbf92122b177be8aa412f0d1385eab 100644 (file)
@@ -1,4 +1,4 @@
-This package is the actual port of OpenSSH to Cygwin 1.3.
+This package is the actual port of OpenSSH to Cygwin 1.5.
 
 ===========================================================================
 Important change since 3.4p1-2:
index 2c6db51e50a3d050e18549ca2ea520a0b703a005..e9c56aea965b21709d782974ddd77543177f57dc 100644 (file)
@@ -279,12 +279,14 @@ then
 # Host *
 #   ForwardAgent no
 #   ForwardX11 no
-#   RhostsAuthentication no
 #   RhostsRSAAuthentication no
 #   RSAAuthentication yes
 #   PasswordAuthentication yes
+#   HostbasedAuthentication no
 #   BatchMode no
 #   CheckHostIP yes
+#   AddressFamily any
+#   ConnectTimeout 0
 #   StrictHostKeyChecking ask
 #   IdentityFile ~/.ssh/identity
 #   IdentityFile ~/.ssh/id_dsa
@@ -397,7 +399,7 @@ Port $port_number
 #HostKey ${SYSCONFDIR}/ssh_host_dsa_key
 
 # Lifetime and size of ephemeral version 1 server key
-#KeyRegenerationInterval 3600
+#KeyRegenerationInterval 1h
 #ServerKeyBits 768
 
 # Logging
@@ -407,7 +409,7 @@ Port $port_number
 
 # Authentication:
 
-#LoginGraceTime 120
+#LoginGraceTime 2m
 #PermitRootLogin yes
 # The following setting overrides permission checks on host key files
 # and directories. For security reasons set this to "yes" when running
@@ -418,10 +420,6 @@ StrictModes no
 #PubkeyAuthentication yes
 #AuthorizedKeysFile     .ssh/authorized_keys
 
-# rhosts authentication should not be used
-#RhostsAuthentication no
-# Don't read the user's ~/.rhosts and ~/.shosts files
-#IgnoreRhosts yes
 # For this to work you will also need host keys in ${SYSCONFDIR}/ssh_known_hosts
 #RhostsRSAAuthentication no
 # similar for protocol version 2
@@ -429,6 +427,8 @@ StrictModes no
 # Change to yes if you don't trust ~/.ssh/known_hosts for
 # RhostsRSAAuthentication and HostbasedAuthentication
 #IgnoreUserKnownHosts no
+# Don't read the user's ~/.rhosts and ~/.shosts files
+#IgnoreRhosts yes
 
 # To disable tunneled clear text passwords, change to no here!
 #PasswordAuthentication yes
@@ -437,6 +437,8 @@ StrictModes no
 # Change to no to disable s/key passwords
 #ChallengeResponseAuthentication yes
 
+#AllowTcpForwarding yes
+#GatewayPorts no
 #X11Forwarding no
 #X11DisplayOffset 10
 #X11UseLocalhost yes
@@ -447,11 +449,14 @@ StrictModes no
 UsePrivilegeSeparation $privsep_used
 #PermitUserEnvironment no
 #Compression yes
-
+#ClientAliveInterval 0
+#ClientAliveCountMax 3
+#UseDNS yes
+#PidFile /var/run/sshd.pid
 #MaxStartups 10
+
 # no default banner path
 #Banner /some/path
-#VerifyReverseMapping no
 
 # override default of no subsystems
 Subsystem      sftp    /usr/sbin/sftp-server
index b65f378391415c43fcf743b5af221d2123c28f5d..20ccb6fac128c4892ec1c67a504a840588cb32e0 100644 (file)
@@ -1,4 +1,4 @@
-%define ver 3.7.1p1
+%define ver 3.7.1p2
 %define rel 1
 
 # OpenSSH privilege separation requires a user & group ID
index be6971d6e0ca27c639f75d877221c48cff26b681..940bc4adee2d21a84e3bd9b6784ea69f488b569b 100644 (file)
@@ -1,6 +1,6 @@
 Summary: OpenSSH, a free Secure Shell (SSH) protocol implementation
 Name: openssh
-Version: 3.7.1p1
+Version: 3.7.1p2
 URL: http://www.openssh.com/
 Release: 1
 Source0: openssh-%{version}.tar.gz
index 0442501e7a17b6ddf4c6f7ae15770c8aa29129fc..8b55d668681a1e78c0c2973cedcace140a8b25d9 100644 (file)
@@ -18,7 +18,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: deattack.c,v 1.18 2002/03/04 17:27:39 stevesk Exp $");
+RCSID("$OpenBSD: deattack.c,v 1.19 2003/09/18 08:49:45 markus Exp $");
 
 #include "deattack.h"
 #include "log.h"
@@ -100,12 +100,12 @@ detect_attack(u_char *buf, u_int32_t len, u_char *IV)
 
        if (h == NULL) {
                debug("Installing crc compensation attack detector.");
+               h = (u_int16_t *) xmalloc(l * HASH_ENTRYSIZE);
                n = l;
-               h = (u_int16_t *) xmalloc(n * HASH_ENTRYSIZE);
        } else {
                if (l > n) {
+                       h = (u_int16_t *) xrealloc(h, l * HASH_ENTRYSIZE);
                        n = l;
-                       h = (u_int16_t *) xrealloc(h, n * HASH_ENTRYSIZE);
                }
        }
 
index 58ce8e5dd63784c31ca075f3f645aa530be85e90..9bce2555baa9f55c50578b2943b3844941733dce 100644 (file)
@@ -40,6 +40,9 @@ RCSID("$OpenBSD: log.c,v 1.28 2003/05/24 09:02:22 djm Exp $");
 #include "xmalloc.h"
 
 #include <syslog.h>
+#if defined(HAVE_STRNVIS) && defined(HAVE_VIS_H)
+# include <vis.h>
+#endif
 
 static LogLevel log_level = SYSLOG_LEVEL_INFO;
 static int log_on_stderr = 1;
index c457a952c5b3ffcd5c3335f55dba7869966b805c..ac616de0234e1ff2afd6177108088ee3061c0281 100644 (file)
@@ -23,7 +23,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: misc.c,v 1.21 2003/04/12 10:15:36 markus Exp $");
+RCSID("$OpenBSD: misc.c,v 1.22 2003/09/18 08:49:45 markus Exp $");
 
 #include "misc.h"
 #include "log.h"
@@ -308,18 +308,21 @@ addargs(arglist *args, char *fmt, ...)
 {
        va_list ap;
        char buf[1024];
+       int nalloc;
 
        va_start(ap, fmt);
        vsnprintf(buf, sizeof(buf), fmt, ap);
        va_end(ap);
 
+       nalloc = args->nalloc;
        if (args->list == NULL) {
-               args->nalloc = 32;
+               nalloc = 32;
                args->num = 0;
-       } else if (args->num+2 >= args->nalloc)
-               args->nalloc *= 2;
+       } else if (args->num+2 >= nalloc)
+               nalloc *= 2;
 
-       args->list = xrealloc(args->list, args->nalloc * sizeof(char *));
+       args->list = xrealloc(args->list, nalloc * sizeof(char *));
+       args->nalloc = nalloc;
        args->list[args->num++] = xstrdup(buf);
        args->list[args->num] = NULL;
 }
index b9ac085c3a3d499112f97c551e2a1fa303b10664..a8a9dd7b3135c200795cee38b5ba9699912612db 100644 (file)
@@ -77,7 +77,11 @@ int getnameinfo(const struct sockaddr *sa, size_t salen, char *host,
 #endif /* !HAVE_GETNAMEINFO */
 
 #ifndef HAVE_GAI_STRERROR
+#ifdef HAVE_CONST_GAI_STRERROR_PROTO
+const char *
+#else
 char *
+#endif
 gai_strerror(int err)
 {
        switch (err) {
index 1ebabf998392b83f16ad732e8e313d2d1a38955c..955986b50218d3f6bd81162e22f0d6bcf5101cb6 100644 (file)
@@ -137,7 +137,7 @@ int getaddrinfo(const char *, const char *,
     const struct addrinfo *, struct addrinfo **);
 #endif /* !HAVE_GETADDRINFO */
 
-#ifndef HAVE_GAI_STRERROR
+#if !defined(HAVE_GAI_STRERROR) && !defined(HAVE_CONST_GAI_STRERROR_PROTO)
 char *gai_strerror(int);
 #endif /* !HAVE_GAI_STRERROR */
 
index e0384491d224c28da3be7483a06b213cf6cc426e..f9fdc9ee57dc20c8c087ec6964e6f99e93bee1f0 100644 (file)
@@ -43,7 +43,6 @@ static char rcsid[] = "$OpenBSD: inet_ntoa.c,v 1.4 2003/06/02 20:18:35 millert E
 #include <netinet/in.h>
 #include <arpa/inet.h>
 #include <stdio.h>
-#include "inet_ntoa.h"
 
 char *inet_ntoa(struct in_addr in)
 {
index 7a981634b1d236ff4fb67e256c0355664aeb8b52..9fbcce936d4d5af0a3099c35b27d7fb59a47d1c3 100644 (file)
 #include "ssh.h"
 #include "log.h"
 #include "servconf.h"
+#include "canohost.h"
+#include "xmalloc.h"
 
 #ifdef _AIX
 
 #include <uinfo.h>
-#include <../xmalloc.h>
 #include "port-aix.h"
 
 extern ServerOptions options;
index 4f1bda1e5e926e76246a1d9a95e44e66eac4048c..8a95816db123411c555c6637f50379d5d297a1c5 100644 (file)
 #ifdef WITH_AIXAUTHENTICATE
 # include <login.h>
 # include <userpw.h>
-# include <usersec.h>
-# ifdef HAVE_SYS_AUDIT_H
+# if defined(HAVE_SYS_AUDIT_H) && defined(AIX_LOGINFAILED_4ARG)
 #  include <sys/audit.h>
 # endif
+# include <usersec.h>
 #endif
 
 /* Some versions define r_type in the above headers, which causes a conflict */
index 4ef639fd6297ef1bf12cca9f0f6f5fe8ca754ada..02b629f30f6ec5358248fa8b26a262527c29fd11 100644 (file)
@@ -37,7 +37,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: packet.c,v 1.109 2003/07/10 14:42:28 markus Exp $");
+RCSID("$OpenBSD: packet.c,v 1.110 2003/09/19 09:02:02 markus Exp $");
 
 #include "openbsd-compat/sys-queue.h"
 
@@ -1020,7 +1020,9 @@ packet_read_poll2(u_int32_t *seqnr_p)
                cp = buffer_ptr(&incoming_packet);
                packet_length = GET_32BIT(cp);
                if (packet_length < 1 + 4 || packet_length > 256 * 1024) {
+#ifdef PACKET_DEBUG
                        buffer_dump(&incoming_packet);
+#endif
                        packet_disconnect("Bad packet length %u.", packet_length);
                }
                DBG(debug("input: packet len %u", packet_length+4));
index 71e28b3cb06202d77c922b66c47f171aa1c72467..58f49a2f4c0add96189edb8552814ce8058a638c 100644 (file)
@@ -110,7 +110,7 @@ fill_default_server_options(ServerOptions *options)
 {
        /* Portable-specific options */
        if (options->use_pam == -1)
-               options->use_pam = 1;
+               options->use_pam = 0;
 
        /* Standard Options */
        if (options->protocol == SSH_PROTO_UNKNOWN)
index 4497f5c0be009484caa3454501ae00fa3834e2bd..2898ac5185f0b84cf64dc5e8709815aa1550e715 100644 (file)
@@ -33,7 +33,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: session.c,v 1.163 2003/08/31 13:29:05 markus Exp $");
+RCSID("$OpenBSD: session.c,v 1.164 2003/09/18 08:49:45 markus Exp $");
 
 #include "ssh.h"
 #include "ssh1.h"
@@ -798,8 +798,9 @@ void
 child_set_env(char ***envp, u_int *envsizep, const char *name,
        const char *value)
 {
-       u_int i, namelen;
        char **env;
+       u_int envsize;
+       u_int i, namelen;
 
        /*
         * If we're passed an uninitialized list, allocate a single null
@@ -826,12 +827,13 @@ child_set_env(char ***envp, u_int *envsizep, const char *name,
                xfree(env[i]);
        } else {
                /* New variable.  Expand if necessary. */
-               if (i >= (*envsizep) - 1) {
-                       if (*envsizep >= 1000)
-                               fatal("child_set_env: too many env vars,"
-                                   " skipping: %.100s", name);
-                       (*envsizep) += 50;
-                       env = (*envp) = xrealloc(env, (*envsizep) * sizeof(char *));
+               envsize = *envsizep;
+               if (i >= envsize - 1) {
+                       if (envsize >= 1000)
+                               fatal("child_set_env: too many env vars");
+                       envsize += 50;
+                       env = (*envp) = xrealloc(env, envsize * sizeof(char *));
+                       *envsizep = envsize;
                }
                /* Need to set the NULL pointer at end of array beyond the new slot. */
                env[i + 1] = NULL;
@@ -912,8 +914,7 @@ static void
 read_etc_default_login(char ***env, u_int *envsize, uid_t uid)
 {
        char **tmpenv = NULL, *var;
-       u_int i;
-       size_t tmpenvsize = 0;
+       u_int i, tmpenvsize = 0;
        mode_t mask;
 
        /*
@@ -923,6 +924,9 @@ read_etc_default_login(char ***env, u_int *envsize, uid_t uid)
         */
        read_environment_file(&tmpenv, &tmpenvsize, "/etc/default/login");
 
+       if (tmpenv == NULL)
+               return;
+
        if (uid == 0)
                var = child_get_env(tmpenv, "SUPATH");
        else
index 94299aa438e2ef060568b1fa1f78237e7b14e39c..c93eaabffbe3e93c240c68956adb80c089bf9259 100644 (file)
@@ -351,6 +351,7 @@ get_pathname(const char **cpp, char **path)
                for (i = j = 0; i <= strlen(cp); i++) {
                        if (cp[i] == quot) {    /* Found quote */
                                (*path)[j] = '\0';
+                               i++;
                                break;
                        }
                        if (cp[i] == '\0') {    /* End of string */
index c05c61468c93e22ce0d62413b72acf12aadbb414..e1e6cae9b29f268fc7eef5082db78ee0ec5a4c5e 100644 (file)
@@ -35,7 +35,7 @@
 
 #include "includes.h"
 #include "openbsd-compat/sys-queue.h"
-RCSID("$OpenBSD: ssh-agent.c,v 1.111 2003/06/12 19:12:03 markus Exp $");
+RCSID("$OpenBSD: ssh-agent.c,v 1.112 2003/09/18 08:49:45 markus Exp $");
 
 #include <openssl/evp.h>
 #include <openssl/md5.h>
@@ -784,7 +784,7 @@ process_message(SocketEntry *e)
 static void
 new_socket(sock_type type, int fd)
 {
-       u_int i, old_alloc;
+       u_int i, old_alloc, new_alloc;
 
        if (fcntl(fd, F_SETFL, O_NONBLOCK) < 0)
                error("fcntl O_NONBLOCK: %s", strerror(errno));
@@ -795,25 +795,26 @@ new_socket(sock_type type, int fd)
        for (i = 0; i < sockets_alloc; i++)
                if (sockets[i].type == AUTH_UNUSED) {
                        sockets[i].fd = fd;
-                       sockets[i].type = type;
                        buffer_init(&sockets[i].input);
                        buffer_init(&sockets[i].output);
                        buffer_init(&sockets[i].request);
+                       sockets[i].type = type;
                        return;
                }
        old_alloc = sockets_alloc;
-       sockets_alloc += 10;
+       new_alloc = sockets_alloc + 10;
        if (sockets)
-               sockets = xrealloc(sockets, sockets_alloc * sizeof(sockets[0]));
+               sockets = xrealloc(sockets, new_alloc * sizeof(sockets[0]));
        else
-               sockets = xmalloc(sockets_alloc * sizeof(sockets[0]));
-       for (i = old_alloc; i < sockets_alloc; i++)
+               sockets = xmalloc(new_alloc * sizeof(sockets[0]));
+       for (i = old_alloc; i < new_alloc; i++)
                sockets[i].type = AUTH_UNUSED;
-       sockets[old_alloc].type = type;
+       sockets_alloc = new_alloc;
        sockets[old_alloc].fd = fd;
        buffer_init(&sockets[old_alloc].input);
        buffer_init(&sockets[old_alloc].output);
        buffer_init(&sockets[old_alloc].request);
+       sockets[old_alloc].type = type;
 }
 
 static int
index 40d22800fcc35d62a22908f90506e4413ade7569..f29ac8088751e17fefb339fe099ee315241f03ba 100644 (file)
@@ -13,7 +13,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: sshconnect.c,v 1.147 2003/06/29 12:44:38 markus Exp $");
+RCSID("$OpenBSD: sshconnect.c,v 1.148 2003/09/18 07:52:54 markus Exp $");
 
 #include <openssl/bn.h>
 
@@ -271,9 +271,10 @@ timeout_connect(int sockfd, const struct sockaddr *serv_addr,
                optval = 0;
                optlen = sizeof(optval);
                if (getsockopt(sockfd, SOL_SOCKET, SO_ERROR, &optval, 
-                   &optlen) == -1)
+                   &optlen) == -1) {
                        debug("getsockopt: %s", strerror(errno));
                        break;
+               }
                if (optval != 0) {
                        errno = optval;
                        break;
index 3f13f9bf4a6f913b9536215efba5398e1b04c46a..9e161d0f08056c57e42d6e20bf805a3b9e21edb2 100644 (file)
@@ -191,10 +191,12 @@ permanently_set_uid(struct passwd *pw)
                    (u_int)pw->pw_gid);
        }
 
+#ifndef HAVE_CYGWIN
        /* Try restoration of UID if changed (test clearing of saved uid) */
        if (old_uid != pw->pw_uid && 
            (setuid(old_uid) != -1 || seteuid(old_uid) != -1))
                fatal("%s: was able to restore old [e]uid", __func__);
+#endif
 
        /* Verify UID drop was successful */
        if (getuid() != pw->pw_uid || geteuid() != pw->pw_uid) {
index 20daac42a6cb8d3e17da6dc3410cf0d5a3126852..0a98e429013c60edfee2d0a477341e48647db47e 100644 (file)
@@ -1,3 +1,3 @@
 /* $OpenBSD: version.h,v 1.39 2003/09/16 21:02:40 markus Exp $ */
 
-#define SSH_VERSION    "OpenSSH_3.7.1p1"
+#define SSH_VERSION    "OpenSSH_3.7.1p2"
This page took 0.132879 seconds and 5 git commands to generate.