]> andersk Git - openssh.git/commitdiff
- OpenBSD CVS updates.
authordamien <damien>
Sun, 16 Apr 2000 01:18:38 +0000 (01:18 +0000)
committerdamien <damien>
Sun, 16 Apr 2000 01:18:38 +0000 (01:18 +0000)
   [ssh.1 ssh.c]
   - ssh -2
   [auth.c channels.c clientloop.c packet.c packet.h serverloop.c]
   [session.c sshconnect.c]
   - check payload for (illegal) extra data
   [ALL]
   - whitespace cleanup

67 files changed:
ChangeLog
auth-krb4.c
auth-passwd.c
auth-rh-rsa.c
auth-rhosts.c
auth-rsa.c
auth-skey.c
auth.c
authfd.c
authfd.h
authfile.c
bufaux.c
bufaux.h
buffer.c
canohost.c
channels.c
channels.h
cipher.c
cipher.h
clientloop.c
compat.c
compress.c
compress.h
crc32.h
dispatch.c [new file with mode: 0644]
dsa.c
getput.h
hostfile.c
hostfile.h
includes.h
kex.c
log-client.c
log-server.c
login.c
match.c
mpaux.c
mpaux.h
nchan.c
packet.c
packet.h
pty.c
pty.h
radix.c
readconf.c
readconf.h
readpass.c
rsa.c
rsa.h
scp.c
servconf.c
servconf.h
serverloop.c
session.c
ssh-agent.c
ssh-keygen.c
ssh.1
ssh.c
ssh.h
ssh2.h
sshconnect.c
sshd.c
ttymodes.c
ttymodes.h
uidswap.c
uidswap.h
xmalloc.c
xmalloc.h

index 643a97f0015568c7a55b87fcf8b65c8a95c71edc..f23250edffec4fb4fce5241b69d8d96986197bc7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,17 @@
+20000415
+ - OpenBSD CVS updates.
+   [ssh.1 ssh.c]
+   - ssh -2
+   [auth.c channels.c clientloop.c packet.c packet.h serverloop.c]
+   [session.c sshconnect.c]
+   - check payload for (illegal) extra data
+   [ALL]
+   whitespace cleanup
+
 20000413
  - INSTALL doc updates
  - Merged OpenBSD updates to include paths.
 20000413
  - INSTALL doc updates
  - Merged OpenBSD updates to include paths.
-
 20000412
  - OpenBSD CVS updates:
    - [channels.c]
 20000412
  - OpenBSD CVS updates:
    - [channels.c]
index 7e30646f88db2ac499332190a2a4af562e631304..a26842713aaef11eedb6acd9d5f75fae2ec5451e 100644 (file)
@@ -19,7 +19,7 @@ extern ServerOptions options;
  * return 1 on success, 0 on failure, -1 if krb4 is not available
  */
 
  * return 1 on success, 0 on failure, -1 if krb4 is not available
  */
 
-int 
+int
 auth_krb4_password(struct passwd * pw, const char *password)
 {
        AUTH_DAT adata;
 auth_krb4_password(struct passwd * pw, const char *password)
 {
        AUTH_DAT adata;
@@ -135,7 +135,7 @@ krb4_cleanup_proc(void *ignore)
        }
 }
 
        }
 }
 
-int 
+int
 krb4_init(uid_t uid)
 {
        static int cleanup_registered = 0;
 krb4_init(uid_t uid)
 {
        static int cleanup_registered = 0;
@@ -179,7 +179,7 @@ krb4_init(uid_t uid)
        return 0;
 }
 
        return 0;
 }
 
-int 
+int
 auth_krb4(const char *server_user, KTEXT auth, char **client)
 {
        AUTH_DAT adat = {0};
 auth_krb4(const char *server_user, KTEXT auth, char **client)
 {
        AUTH_DAT adat = {0};
@@ -252,7 +252,7 @@ auth_krb4(const char *server_user, KTEXT auth, char **client)
 #endif /* KRB4 */
 
 #ifdef AFS
 #endif /* KRB4 */
 
 #ifdef AFS
-int 
+int
 auth_kerberos_tgt(struct passwd *pw, const char *string)
 {
        CREDENTIALS creds;
 auth_kerberos_tgt(struct passwd *pw, const char *string)
 {
        CREDENTIALS creds;
@@ -307,7 +307,7 @@ auth_kerberos_tgt_failure:
        return 0;
 }
 
        return 0;
 }
 
-int 
+int
 auth_afs_token(struct passwd *pw, const char *token_string)
 {
        CREDENTIALS creds;
 auth_afs_token(struct passwd *pw, const char *token_string)
 {
        CREDENTIALS creds;
index 90653cda0d88398076ef6886da59f33929d12bcf..adf3ef45077f178c59fcb04c6207dd12c0bdad11 100644 (file)
@@ -33,7 +33,7 @@ RCSID("$Id$");
  * Tries to authenticate the user using password.  Returns true if
  * authentication succeeds.
  */
  * Tries to authenticate the user using password.  Returns true if
  * authentication succeeds.
  */
-int 
+int
 auth_password(struct passwd * pw, const char *password)
 {
        extern ServerOptions options;
 auth_password(struct passwd * pw, const char *password)
 {
        extern ServerOptions options;
index ff33591d84190b6319e0cec6fc3a6a7051dcd1cf..b2730d6bfc159155247a3b4680cf44f118f2e8d7 100644 (file)
@@ -1,14 +1,14 @@
 /*
 /*
- * 
+ *
  * auth-rh-rsa.c
  * auth-rh-rsa.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Sun May  7 03:08:06 1995 ylo
  * Created: Sun May  7 03:08:06 1995 ylo
- * 
+ *
  * Rhosts or /etc/hosts.equiv authentication combined with RSA host
  * authentication.
  *
  * Rhosts or /etc/hosts.equiv authentication combined with RSA host
  * authentication.
  *
@@ -42,7 +42,7 @@ RCSID("$Id$");
  * its host key.  Returns true if authentication succeeds.
  */
 
  * its host key.  Returns true if authentication succeeds.
  */
 
-int 
+int
 auth_rhosts_rsa(struct passwd *pw, const char *client_user, RSA *client_host_key)
 {
        extern ServerOptions options;
 auth_rhosts_rsa(struct passwd *pw, const char *client_user, RSA *client_host_key)
 {
        extern ServerOptions options;
index e014dd867565f682bf357e61d261ca7fd52c26b3..767f55c2c36bd98528185d1fb6a91e5e7ad9f4bc 100644 (file)
@@ -1,18 +1,18 @@
 /*
 /*
- * 
+ *
  * auth-rhosts.c
  * auth-rhosts.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Fri Mar 17 05:12:18 1995 ylo
  * Created: Fri Mar 17 05:12:18 1995 ylo
- * 
+ *
  * Rhosts authentication.  This file contains code to check whether to admit
  * the login based on rhosts authentication.  This file also processes
  * /etc/hosts.equiv.
  * Rhosts authentication.  This file contains code to check whether to admit
  * the login based on rhosts authentication.  This file also processes
  * /etc/hosts.equiv.
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
@@ -30,7 +30,7 @@ RCSID("$Id$");
  * based on the file, and returns zero otherwise.
  */
 
  * based on the file, and returns zero otherwise.
  */
 
-int 
+int
 check_rhosts_file(const char *filename, const char *hostname,
                  const char *ipaddr, const char *client_user,
                  const char *server_user)
 check_rhosts_file(const char *filename, const char *hostname,
                  const char *ipaddr, const char *client_user,
                  const char *server_user)
@@ -146,7 +146,7 @@ check_rhosts_file(const char *filename, const char *hostname,
  * /etc/hosts.equiv will be considered (.rhosts and .shosts are ignored).
  */
 
  * /etc/hosts.equiv will be considered (.rhosts and .shosts are ignored).
  */
 
-int 
+int
 auth_rhosts(struct passwd *pw, const char *client_user)
 {
        extern ServerOptions options;
 auth_rhosts(struct passwd *pw, const char *client_user)
 {
        extern ServerOptions options;
index 73c46406ba955cb3ac99c08f7bfd3225c0cc4c44..5fcdae4c6e505dc32b1ccf95e34aec637ba6389a 100644 (file)
@@ -1,18 +1,18 @@
 /*
 /*
- * 
+ *
  * auth-rsa.c
  * auth-rsa.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Mon Mar 27 01:46:52 1995 ylo
  * Created: Mon Mar 27 01:46:52 1995 ylo
- * 
+ *
  * RSA-based authentication.  This code determines whether to admit a login
  * based on RSA authentication.  This file also contains functions to check
  * validity of the host key.
  * RSA-based authentication.  This code determines whether to admit a login
  * based on RSA authentication.  This file also contains functions to check
  * validity of the host key.
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
@@ -244,7 +244,7 @@ auth_rsa(struct passwd *pw, BIGNUM *client_n)
                        debug("%.100s, line %lu: bad key syntax",
                              SSH_USER_PERMITTED_KEYS, linenum);
                        packet_send_debug("%.100s, line %lu: bad key syntax",
                        debug("%.100s, line %lu: bad key syntax",
                              SSH_USER_PERMITTED_KEYS, linenum);
                        packet_send_debug("%.100s, line %lu: bad key syntax",
-                                         SSH_USER_PERMITTED_KEYS, linenum);
+                                         SSH_USER_PERMITTED_KEYS, linenum);
                        continue;
                }
                /* cp now points to the comment part. */
                        continue;
                }
                /* cp now points to the comment part. */
index d7d8422f17a794250b4c8175f18cbe527150d14d..7082d0c8bbb0c164c5cd8247dc744069b2fe8e0f 100644 (file)
@@ -15,12 +15,12 @@ RCSID("$Id$");
 
 /* from %OpenBSD: skeylogin.c,v 1.32 1999/08/16 14:46:56 millert Exp % */
 
 
 /* from %OpenBSD: skeylogin.c,v 1.32 1999/08/16 14:46:56 millert Exp % */
 
-/* 
+/*
  * try skey authentication,
  * try skey authentication,
- * return 1 on success, 0 on failure, -1 if skey is not available 
+ * return 1 on success, 0 on failure, -1 if skey is not available
  */
 
  */
 
-int 
+int
 auth_skey_password(struct passwd * pw, const char *password)
 {
        if (strncasecmp(password, "s/key", 5) == 0) {
 auth_skey_password(struct passwd * pw, const char *password)
 {
        if (strncasecmp(password, "s/key", 5) == 0) {
@@ -53,18 +53,18 @@ auth_skey_password(struct passwd * pw, const char *password)
  */
 static u_int32_t
 hash_collapse(s)
  */
 static u_int32_t
 hash_collapse(s)
-        u_char *s;
+       u_char *s;
 {
 {
-        int len, target;
+       int len, target;
        u_int32_t i;
        
        if ((strlen(s) % sizeof(u_int32_t)) == 0)
        u_int32_t i;
        
        if ((strlen(s) % sizeof(u_int32_t)) == 0)
-               target = strlen(s);    /* Multiple of 4 */
+               target = strlen(s);    /* Multiple of 4 */
        else
                target = strlen(s) - (strlen(s) % sizeof(u_int32_t));
        else
                target = strlen(s) - (strlen(s) % sizeof(u_int32_t));
-  
+
        for (i = 0, len = 0; len < target; len += 4)
        for (i = 0, len = 0; len < target; len += 4)
-               i ^= ROUND(s + len);
+               i ^= ROUND(s + len);
 
        return i;
 }
 
        return i;
 }
diff --git a/auth.c b/auth.c
index e94a86e95936aca7678dfd069c84cf26d14f1cf9..4c6f32b0a7481e59948ee47e310b8b512d67c643 100644 (file)
--- a/auth.c
+++ b/auth.c
@@ -5,7 +5,7 @@
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: auth.c,v 1.2 2000/04/06 08:55:22 markus Exp $");
+RCSID("$OpenBSD: auth.c,v 1.4 2000/04/14 10:30:29 markus Exp $");
 
 #include "xmalloc.h"
 #include "rsa.h"
 
 #include "xmalloc.h"
 #include "rsa.h"
@@ -36,9 +36,9 @@ extern char *forced_command;
  * DenyUsers or user's primary group is listed in DenyGroups, false will
  * be returned. If AllowUsers isn't empty and user isn't listed there, or
  * if AllowGroups isn't empty and user isn't listed there, false will be
  * DenyUsers or user's primary group is listed in DenyGroups, false will
  * be returned. If AllowUsers isn't empty and user isn't listed there, or
  * if AllowGroups isn't empty and user isn't listed there, false will be
- * returned. 
+ * returned.
  * If the user's shell is not executable, false will be returned.
  * If the user's shell is not executable, false will be returned.
- * Otherwise true is returned. 
+ * Otherwise true is returned.
  */
 static int
 allowed_user(struct passwd * pw)
  */
 static int
 allowed_user(struct passwd * pw)
@@ -201,10 +201,10 @@ do_fake_authloop1(char *user)
                                packet_write_wait();
                                continue;
                        } else if (type == SSH_CMSG_AUTH_PASSWORD &&
                                packet_write_wait();
                                continue;
                        } else if (type == SSH_CMSG_AUTH_PASSWORD &&
-                                  options.password_authentication &&
-                                  (password = packet_get_string(&dlen)) != NULL &&
-                                  dlen == 5 &&
-                                  strncasecmp(password, "s/key", 5) == 0 ) {
+                                  options.password_authentication &&
+                                  (password = packet_get_string(&dlen)) != NULL &&
+                                  dlen == 5 &&
+                                  strncasecmp(password, "s/key", 5) == 0 ) {
                                packet_send_debug(skeyinfo);
                        }
                        if (password != NULL)
                                packet_send_debug(skeyinfo);
                        }
                        if (password != NULL)
@@ -457,20 +457,20 @@ do_authloop(struct passwd * pw)
                        break;
                }
 
                        break;
                }
 
-               /*
-                * Check if the user is logging in as root and root logins
-                * are disallowed.
-                * Note that root login is allowed for forced commands.
-                */
-               if (authenticated && pw->pw_uid == 0 && !options.permit_root_login) {
-                       if (forced_command) {
-                               log("Root login accepted for forced command.");
-                       } else {
-                               authenticated = 0;
-                               log("ROOT LOGIN REFUSED FROM %.200s",
-                                   get_canonical_hostname());
-                       }
-               }
+               /*
+                * Check if the user is logging in as root and root logins
+                * are disallowed.
+                * Note that root login is allowed for forced commands.
+                */
+               if (authenticated && pw->pw_uid == 0 && !options.permit_root_login) {
+                       if (forced_command) {
+                               log("Root login accepted for forced command.");
+                       } else {
+                               authenticated = 0;
+                               log("ROOT LOGIN REFUSED FROM %.200s",
+                                   get_canonical_hostname());
+                       }
+               }
 
                /* Raise logging level */
                if (authenticated ||
 
                /* Raise logging level */
                if (authenticated ||
@@ -685,6 +685,7 @@ input_service_request(int type, int plen)
        unsigned int len;
        int accept = 0;
        char *service = packet_get_string(&len);
        unsigned int len;
        int accept = 0;
        char *service = packet_get_string(&len);
+       packet_done();
 
        if (strcmp(service, "ssh-userauth") == 0) {
                if (!userauth_success) {
 
        if (strcmp(service, "ssh-userauth") == 0) {
                if (!userauth_success) {
@@ -727,6 +728,7 @@ input_userauth_request(int type, int plen)
        pw = auth_set_user(user, service);
        if (pw && strcmp(service, "ssh-connection")==0) {
                if (strcmp(method, "none") == 0 && try == 1) {
        pw = auth_set_user(user, service);
        if (pw && strcmp(service, "ssh-connection")==0) {
                if (strcmp(method, "none") == 0 && try == 1) {
+                       packet_done();
 #ifdef USE_PAM
                        /* Do PAM auth with password */
                        authenticated = auth_pam_password(pw, "");
 #ifdef USE_PAM
                        /* Do PAM auth with password */
                        authenticated = auth_pam_password(pw, "");
@@ -740,6 +742,7 @@ input_userauth_request(int type, int plen)
                        if (c)
                                debug("password change not supported");
                        password = packet_get_string(&len);
                        if (c)
                                debug("password change not supported");
                        password = packet_get_string(&len);
+                       packet_done();
 #ifdef USE_PAM
                        /* Do PAM auth with password */
                        authenticated = auth_pam_password(pw, password);
 #ifdef USE_PAM
                        /* Do PAM auth with password */
                        authenticated = auth_pam_password(pw, password);
@@ -751,11 +754,19 @@ input_userauth_request(int type, int plen)
                        xfree(password);
                } else if (strcmp(method, "publickey") == 0) {
                        /* XXX TODO */
                        xfree(password);
                } else if (strcmp(method, "publickey") == 0) {
                        /* XXX TODO */
-                       char *pkalg;
-                       char *pkblob;
-                       c = packet_get_char();
+                       char *pkalg, *pkblob, *sig;
+                       int have_sig = packet_get_char();
                        pkalg = packet_get_string(&len);
                        pkblob = packet_get_string(&len);
                        pkalg = packet_get_string(&len);
                        pkblob = packet_get_string(&len);
+                       if (have_sig) {
+                               sig = packet_get_string(&len);
+                               /* test for correct signature */
+                               packet_done();
+                               xfree(sig);
+                       } else {
+                               packet_done();
+                               /* test whether pkalg/pkblob are acceptable */
+                       }
                        xfree(pkalg);
                        xfree(pkblob);
                }
                        xfree(pkalg);
                        xfree(pkblob);
                }
@@ -764,7 +775,6 @@ input_userauth_request(int type, int plen)
        if (authenticated) {
                /* turn off userauth */
                dispatch_set(SSH2_MSG_USERAUTH_REQUEST, &protocol_error);
        if (authenticated) {
                /* turn off userauth */
                dispatch_set(SSH2_MSG_USERAUTH_REQUEST, &protocol_error);
-               /* success! */
                packet_start(SSH2_MSG_USERAUTH_SUCCESS);
                packet_send();
                packet_write_wait();
                packet_start(SSH2_MSG_USERAUTH_SUCCESS);
                packet_send();
                packet_write_wait();
@@ -782,7 +792,7 @@ input_userauth_request(int type, int plen)
        xfree(user);
        xfree(method);
 }
        xfree(user);
        xfree(method);
 }
-void 
+void
 do_authentication2()
 {
        dispatch_init(&protocol_error);
 do_authentication2()
 {
        dispatch_init(&protocol_error);
index a56f2969c2cc3f4c0d690baf8dac2c7feaf73033..52a0ee5bfb57417239826978516d9b3a6a4232b4 100644 (file)
--- a/authfd.c
+++ b/authfd.c
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * authfd.c
  * authfd.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Wed Mar 29 01:30:28 1995 ylo
  * Created: Wed Mar 29 01:30:28 1995 ylo
- * 
+ *
  * Functions for connecting the local authentication agent.
  * Functions for connecting the local authentication agent.
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
@@ -69,7 +69,7 @@ ssh_get_authentication_socket()
  * ssh_get_authentication_socket().
  */
 
  * ssh_get_authentication_socket().
  */
 
-void 
+void
 ssh_close_authentication_socket(int sock)
 {
        if (getenv(SSH_AUTHSOCKET_ENV_NAME))
 ssh_close_authentication_socket(int sock)
 {
        if (getenv(SSH_AUTHSOCKET_ENV_NAME))
@@ -113,7 +113,7 @@ ssh_get_authentication_connection()
  * memory.
  */
 
  * memory.
  */
 
-void 
+void
 ssh_close_authentication_connection(AuthenticationConnection *ac)
 {
        buffer_free(&ac->packet);
 ssh_close_authentication_connection(AuthenticationConnection *ac)
 {
        buffer_free(&ac->packet);
@@ -343,7 +343,7 @@ error_cleanup:
  * be used by normal applications.
  */
 
  * be used by normal applications.
  */
 
-int 
+int
 ssh_add_identity(AuthenticationConnection *auth,
                 RSA * key, const char *comment)
 {
 ssh_add_identity(AuthenticationConnection *auth,
                 RSA * key, const char *comment)
 {
@@ -431,7 +431,7 @@ error_cleanup:
  * meant to be used by normal applications.
  */
 
  * meant to be used by normal applications.
  */
 
-int 
+int
 ssh_remove_identity(AuthenticationConnection *auth, RSA *key)
 {
        Buffer buffer;
 ssh_remove_identity(AuthenticationConnection *auth, RSA *key)
 {
        Buffer buffer;
@@ -514,7 +514,7 @@ error_cleanup:
  * by normal applications.
  */
 
  * by normal applications.
  */
 
-int 
+int
 ssh_remove_all_identities(AuthenticationConnection *auth)
 {
        Buffer buffer;
 ssh_remove_all_identities(AuthenticationConnection *auth)
 {
        Buffer buffer;
index bdbdafd2b6aab6655c3d35c8a7976e3a340797a1..3763f390337231535dd47c1b2cb04db92122d09f 100644 (file)
--- a/authfd.h
+++ b/authfd.h
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * authfd.h
  * authfd.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Wed Mar 29 01:17:41 1995 ylo
  * Created: Wed Mar 29 01:17:41 1995 ylo
- * 
+ *
  * Functions to interface with the SSH_AUTHENTICATION_FD socket.
  * Functions to interface with the SSH_AUTHENTICATION_FD socket.
- * 
+ *
  */
 
 /* RCSID("$Id$"); */
  */
 
 /* RCSID("$Id$"); */
@@ -67,7 +67,7 @@ void    ssh_close_authentication_connection(AuthenticationConnection * ac);
  * integers before the call, and free the comment after a successful call
  * (before calling ssh_get_next_identity).
  */
  * integers before the call, and free the comment after a successful call
  * (before calling ssh_get_next_identity).
  */
-int 
+int
 ssh_get_first_identity(AuthenticationConnection * connection,
     BIGNUM * e, BIGNUM * n, char **comment);
 
 ssh_get_first_identity(AuthenticationConnection * connection,
     BIGNUM * e, BIGNUM * n, char **comment);
 
@@ -77,13 +77,13 @@ ssh_get_first_identity(AuthenticationConnection * connection,
  * function.  This returns 0 if there are no more identities.  The caller
  * must free comment after a successful return.
  */
  * function.  This returns 0 if there are no more identities.  The caller
  * must free comment after a successful return.
  */
-int 
+int
 ssh_get_next_identity(AuthenticationConnection * connection,
     BIGNUM * e, BIGNUM * n, char **comment);
 
 /* Requests the agent to decrypt the given challenge.  Returns true if
    the agent claims it was able to decrypt it. */
 ssh_get_next_identity(AuthenticationConnection * connection,
     BIGNUM * e, BIGNUM * n, char **comment);
 
 /* Requests the agent to decrypt the given challenge.  Returns true if
    the agent claims it was able to decrypt it. */
-int 
+int
 ssh_decrypt_challenge(AuthenticationConnection * auth,
     BIGNUM * e, BIGNUM * n, BIGNUM * challenge,
     unsigned char session_id[16],
 ssh_decrypt_challenge(AuthenticationConnection * auth,
     BIGNUM * e, BIGNUM * n, BIGNUM * challenge,
     unsigned char session_id[16],
@@ -95,7 +95,7 @@ ssh_decrypt_challenge(AuthenticationConnection * auth,
  * be used by normal applications.  This returns true if the identity was
  * successfully added.
  */
  * be used by normal applications.  This returns true if the identity was
  * successfully added.
  */
-int    
+int
 ssh_add_identity(AuthenticationConnection * connection, RSA * key,
     const char *comment);
 
 ssh_add_identity(AuthenticationConnection * connection, RSA * key,
     const char *comment);
 
index 50259e19a6fdc8b985328e0b9607743fc9473786..79c14d220e4e9aec5ee78890f2cca5186163a56f 100644 (file)
@@ -1,17 +1,17 @@
 /*
 /*
- * 
+ *
  * authfile.c
  * authfile.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Mon Mar 27 03:52:05 1995 ylo
  * Created: Mon Mar 27 03:52:05 1995 ylo
- * 
+ *
  * This file contains functions for reading and writing identity files, and
  * for reading the passphrase from the user.
  * This file contains functions for reading and writing identity files, and
  * for reading the passphrase from the user.
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
index aa95cb3f06811e8bb2f7e97a24f74d89a27bbf1b..def645fc4276d250884f839cd18f8051567e3353 100644 (file)
--- a/bufaux.c
+++ b/bufaux.c
@@ -1,14 +1,14 @@
 /*
 /*
- * 
+ *
  * bufaux.c
  * bufaux.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Wed Mar 29 02:24:47 1995 ylo
  * Created: Wed Mar 29 02:24:47 1995 ylo
- * 
+ *
  * Auxiliary functions for storing and retrieving various data types to/from
  * Buffers.
  *
  * Auxiliary functions for storing and retrieving various data types to/from
  * Buffers.
  *
index ce5442efedb5ede1a1426388cf513ba3cf3fba92..5d66730daedae57400a41f0c27f68adfae03dfd1 100644 (file)
--- a/bufaux.h
+++ b/bufaux.h
@@ -1,14 +1,14 @@
 /*
 /*
- * 
+ *
  * bufaux.h
  * bufaux.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Wed Mar 29 02:18:23 1995 ylo
  * Created: Wed Mar 29 02:18:23 1995 ylo
- * 
+ *
  */
 
 /* RCSID("$Id$"); */
  */
 
 /* RCSID("$Id$"); */
index e275830e6893f86e6dd2d961a154fb677ec5c5b8..8610e0c6669475024c2a11eac64d06e4d3aabdb1 100644 (file)
--- a/buffer.c
+++ b/buffer.c
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * buffer.c
  * buffer.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Sat Mar 18 04:15:33 1995 ylo
  * Created: Sat Mar 18 04:15:33 1995 ylo
- * 
+ *
  * Functions for manipulating fifo buffers (that can grow if needed).
  * Functions for manipulating fifo buffers (that can grow if needed).
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
@@ -22,7 +22,7 @@ RCSID("$Id$");
 
 /* Initializes the buffer structure. */
 
 
 /* Initializes the buffer structure. */
 
-void 
+void
 buffer_init(Buffer *buffer)
 {
        buffer->alloc = 4096;
 buffer_init(Buffer *buffer)
 {
        buffer->alloc = 4096;
@@ -33,7 +33,7 @@ buffer_init(Buffer *buffer)
 
 /* Frees any memory used for the buffer. */
 
 
 /* Frees any memory used for the buffer. */
 
-void 
+void
 buffer_free(Buffer *buffer)
 {
        memset(buffer->buf, 0, buffer->alloc);
 buffer_free(Buffer *buffer)
 {
        memset(buffer->buf, 0, buffer->alloc);
@@ -45,7 +45,7 @@ buffer_free(Buffer *buffer)
  * zero the memory.
  */
 
  * zero the memory.
  */
 
-void 
+void
 buffer_clear(Buffer *buffer)
 {
        buffer->offset = 0;
 buffer_clear(Buffer *buffer)
 {
        buffer->offset = 0;
@@ -54,7 +54,7 @@ buffer_clear(Buffer *buffer)
 
 /* Appends data to the buffer, expanding it if necessary. */
 
 
 /* Appends data to the buffer, expanding it if necessary. */
 
-void 
+void
 buffer_append(Buffer *buffer, const char *data, unsigned int len)
 {
        char *cp;
 buffer_append(Buffer *buffer, const char *data, unsigned int len)
 {
        char *cp;
@@ -68,7 +68,7 @@ buffer_append(Buffer *buffer, const char *data, unsigned int len)
  * to the allocated region.
  */
 
  * to the allocated region.
  */
 
-void 
+void
 buffer_append_space(Buffer *buffer, char **datap, unsigned int len)
 {
        /* If the buffer is empty, start using it from the beginning. */
 buffer_append_space(Buffer *buffer, char **datap, unsigned int len)
 {
        /* If the buffer is empty, start using it from the beginning. */
@@ -102,7 +102,7 @@ restart:
 
 /* Returns the number of bytes of data in the buffer. */
 
 
 /* Returns the number of bytes of data in the buffer. */
 
-unsigned int 
+unsigned int
 buffer_len(Buffer *buffer)
 {
        return buffer->end - buffer->offset;
 buffer_len(Buffer *buffer)
 {
        return buffer->end - buffer->offset;
@@ -110,7 +110,7 @@ buffer_len(Buffer *buffer)
 
 /* Gets data from the beginning of the buffer. */
 
 
 /* Gets data from the beginning of the buffer. */
 
-void 
+void
 buffer_get(Buffer *buffer, char *buf, unsigned int len)
 {
        if (len > buffer->end - buffer->offset)
 buffer_get(Buffer *buffer, char *buf, unsigned int len)
 {
        if (len > buffer->end - buffer->offset)
@@ -121,7 +121,7 @@ buffer_get(Buffer *buffer, char *buf, unsigned int len)
 
 /* Consumes the given number of bytes from the beginning of the buffer. */
 
 
 /* Consumes the given number of bytes from the beginning of the buffer. */
 
-void 
+void
 buffer_consume(Buffer *buffer, unsigned int bytes)
 {
        if (bytes > buffer->end - buffer->offset)
 buffer_consume(Buffer *buffer, unsigned int bytes)
 {
        if (bytes > buffer->end - buffer->offset)
@@ -131,7 +131,7 @@ buffer_consume(Buffer *buffer, unsigned int bytes)
 
 /* Consumes the given number of bytes from the end of the buffer. */
 
 
 /* Consumes the given number of bytes from the end of the buffer. */
 
-void 
+void
 buffer_consume_end(Buffer *buffer, unsigned int bytes)
 {
        if (bytes > buffer->end - buffer->offset)
 buffer_consume_end(Buffer *buffer, unsigned int bytes)
 {
        if (bytes > buffer->end - buffer->offset)
@@ -149,7 +149,7 @@ buffer_ptr(Buffer *buffer)
 
 /* Dumps the contents of the buffer to stderr. */
 
 
 /* Dumps the contents of the buffer to stderr. */
 
-void 
+void
 buffer_dump(Buffer *buffer)
 {
        int i;
 buffer_dump(Buffer *buffer)
 {
        int i;
index bc1b2eb842839e28bf2a95e1b890a8043cc15dc7..73f10653a050c00c2925b2e13eea9a55d5e40bd4 100644 (file)
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * canohost.c
  * canohost.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Sun Jul  2 17:52:22 1995 ylo
  * Created: Sun Jul  2 17:52:22 1995 ylo
- * 
+ *
  * Functions for returning the canonical host name of the remote site.
  * Functions for returning the canonical host name of the remote site.
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
@@ -265,7 +265,7 @@ get_sock_port(int sock, int local)
 
 /* Returns remote/local port number for the current connection. */
 
 
 /* Returns remote/local port number for the current connection. */
 
-int 
+int
 get_port(int local)
 {
        /*
 get_port(int local)
 {
        /*
@@ -279,13 +279,13 @@ get_port(int local)
        return get_sock_port(packet_get_connection_in(), local);
 }
 
        return get_sock_port(packet_get_connection_in(), local);
 }
 
-int 
+int
 get_peer_port(int sock)
 {
        return get_sock_port(sock, 0);
 }
 
 get_peer_port(int sock)
 {
        return get_sock_port(sock, 0);
 }
 
-int 
+int
 get_remote_port()
 {
        return get_port(0);
 get_remote_port()
 {
        return get_port(0);
index 60c0560708a7d1d41c92bd5da632bb7e35c5c418..a67615b3c3147d85e2d18a02a6f07a7b195730e9 100644 (file)
@@ -1,18 +1,18 @@
 /*
 /*
- * 
+ *
  * channels.c
  * channels.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Fri Mar 24 16:35:24 1995 ylo
  * Created: Fri Mar 24 16:35:24 1995 ylo
- * 
+ *
  * This file contains functions for generic socket connection forwarding.
  * There is also code for initiating connection forwarding for X11 connections,
  * arbitrary tcp/ip connections, and the authentication agent connection.
  * This file contains functions for generic socket connection forwarding.
  * There is also code for initiating connection forwarding for X11 connections,
  * arbitrary tcp/ip connections, and the authentication agent connection.
- * 
+ *
  * SSH2 support added by Markus Friedl.
  */
 
  * SSH2 support added by Markus Friedl.
  */
 
@@ -109,7 +109,7 @@ static int have_hostname_in_open = 0;
 
 /* Sets specific protocol options. */
 
 
 /* Sets specific protocol options. */
 
-void 
+void
 channel_set_options(int hostname_in_open)
 {
        have_hostname_in_open = hostname_in_open;
 channel_set_options(int hostname_in_open)
 {
        have_hostname_in_open = hostname_in_open;
@@ -121,7 +121,7 @@ channel_set_options(int hostname_in_open)
  * and the server has no way to know but to trust the client anyway.
  */
 
  * and the server has no way to know but to trust the client anyway.
  */
 
-void 
+void
 channel_permit_all_opens()
 {
        all_opens_permitted = 1;
 channel_permit_all_opens()
 {
        all_opens_permitted = 1;
@@ -150,7 +150,7 @@ channel_lookup(int id)
  * remote_name to be freed.
  */
 
  * remote_name to be freed.
  */
 
-int 
+int
 channel_new(char *ctype, int type, int rfd, int wfd, int efd,
     int window, int maxpack, int extended_usage, char *remote_name)
 {
 channel_new(char *ctype, int type, int rfd, int wfd, int efd,
     int window, int maxpack, int extended_usage, char *remote_name)
 {
@@ -226,7 +226,7 @@ channel_new(char *ctype, int type, int rfd, int wfd, int efd,
        debug("channel %d: new [%s]", found, remote_name);
        return found;
 }
        debug("channel %d: new [%s]", found, remote_name);
        return found;
 }
-int 
+int
 channel_allocate(int type, int sock, char *remote_name)
 {
        return channel_new("", type, sock, sock, -1, 0, 0, 0, remote_name);
 channel_allocate(int type, int sock, char *remote_name)
 {
        return channel_new("", type, sock, sock, -1, 0, 0, 0, remote_name);
@@ -234,7 +234,7 @@ channel_allocate(int type, int sock, char *remote_name)
 
 /* Free the channel and close its socket. */
 
 
 /* Free the channel and close its socket. */
 
-void 
+void
 channel_free(int id)
 {
        Channel *c = channel_lookup(id);
 channel_free(int id)
 {
        Channel *c = channel_lookup(id);
@@ -361,7 +361,7 @@ channel_pre_output_draining(Channel *c, fd_set * readset, fd_set * writeset)
 {
        if (buffer_len(&c->output) == 0)
                channel_free(c->self);
 {
        if (buffer_len(&c->output) == 0)
                channel_free(c->self);
-       else 
+       else
                FD_SET(c->sock, writeset);
 }
 
                FD_SET(c->sock, writeset);
 }
 
@@ -540,8 +540,10 @@ channel_post_port_listener(Channel *c, fd_set * readset, fd_set * writeset)
                        packet_put_int(newch);
                        packet_put_int(c->local_window_max);
                        packet_put_int(c->local_maxpacket);
                        packet_put_int(newch);
                        packet_put_int(c->local_window_max);
                        packet_put_int(c->local_maxpacket);
+                       /* target host and port */
                        packet_put_string(c->path, strlen(c->path));
                        packet_put_int(c->host_port);
                        packet_put_string(c->path, strlen(c->path));
                        packet_put_int(c->host_port);
+                       /* originator host and port */
                        packet_put_cstring(remote_hostname);
                        packet_put_int(remote_port);
                        packet_send();
                        packet_put_cstring(remote_hostname);
                        packet_put_int(remote_port);
                        packet_send();
@@ -782,7 +784,7 @@ channel_handler_init(void)
                channel_handler_init_15();
 }
 
                channel_handler_init_15();
 }
 
-void 
+void
 channel_handler(chan_fn *ftab[], fd_set * readset, fd_set * writeset)
 {
        static int did_init = 0;
 channel_handler(chan_fn *ftab[], fd_set * readset, fd_set * writeset)
 {
        static int did_init = 0;
@@ -804,13 +806,13 @@ channel_handler(chan_fn *ftab[], fd_set * readset, fd_set * writeset)
        }
 }
 
        }
 }
 
-void 
+void
 channel_prepare_select(fd_set * readset, fd_set * writeset)
 {
        channel_handler(channel_pre, readset, writeset);
 }
 
 channel_prepare_select(fd_set * readset, fd_set * writeset)
 {
        channel_handler(channel_pre, readset, writeset);
 }
 
-void 
+void
 channel_after_select(fd_set * readset, fd_set * writeset)
 {
        channel_handler(channel_post, readset, writeset);
 channel_after_select(fd_set * readset, fd_set * writeset)
 {
        channel_handler(channel_post, readset, writeset);
@@ -818,7 +820,7 @@ channel_after_select(fd_set * readset, fd_set * writeset)
 
 /* If there is data to send to the connection, send some of it now. */
 
 
 /* If there is data to send to the connection, send some of it now. */
 
-void 
+void
 channel_output_poll()
 {
        int len, i;
 channel_output_poll()
 {
        int len, i;
@@ -909,7 +911,7 @@ channel_output_poll()
  * still there.
  */
 
  * still there.
  */
 
-void 
+void
 channel_input_data(int type, int plen)
 {
        int id;
 channel_input_data(int type, int plen)
 {
        int id;
@@ -934,6 +936,7 @@ channel_input_data(int type, int plen)
 
        /* Get the data. */
        data = packet_get_string(&data_len);
 
        /* Get the data. */
        data = packet_get_string(&data_len);
+       packet_done();
 
        if (compat20){
                if (data_len > c->local_maxpacket) {
 
        if (compat20){
                if (data_len > c->local_maxpacket) {
@@ -953,7 +956,7 @@ channel_input_data(int type, int plen)
        buffer_append(&c->output, data, data_len);
        xfree(data);
 }
        buffer_append(&c->output, data, data_len);
        xfree(data);
 }
-void 
+void
 channel_input_extended_data(int type, int plen)
 {
        int id;
 channel_input_extended_data(int type, int plen)
 {
        int id;
@@ -980,6 +983,7 @@ channel_input_extended_data(int type, int plen)
                return;
        }
        data = packet_get_string(&data_len);
                return;
        }
        data = packet_get_string(&data_len);
+       packet_done();
        if (data_len > c->local_window) {
                log("channel %d: rcvd too much extended_data %d, win %d",
                    c->self, data_len, c->local_window);
        if (data_len > c->local_window) {
                log("channel %d: rcvd too much extended_data %d, win %d",
                    c->self, data_len, c->local_window);
@@ -998,7 +1002,7 @@ channel_input_extended_data(int type, int plen)
  * more channel is overfull.
  */
 
  * more channel is overfull.
  */
 
-int 
+int
 channel_not_very_much_buffered_data()
 {
        unsigned int i;
 channel_not_very_much_buffered_data()
 {
        unsigned int i;
@@ -1022,7 +1026,7 @@ channel_not_very_much_buffered_data()
        return 1;
 }
 
        return 1;
 }
 
-void 
+void
 channel_input_ieof(int type, int plen)
 {
        int id;
 channel_input_ieof(int type, int plen)
 {
        int id;
@@ -1037,7 +1041,7 @@ channel_input_ieof(int type, int plen)
        chan_rcvd_ieof(c);
 }
 
        chan_rcvd_ieof(c);
 }
 
-void 
+void
 channel_input_close(int type, int plen)
 {
        int id;
 channel_input_close(int type, int plen)
 {
        int id;
@@ -1076,7 +1080,7 @@ channel_input_close(int type, int plen)
 }
 
 /* proto version 1.5 overloads CLOSE_CONFIRMATION with OCLOSE */
 }
 
 /* proto version 1.5 overloads CLOSE_CONFIRMATION with OCLOSE */
-void 
+void
 channel_input_oclose(int type, int plen)
 {
        int id = packet_get_int();
 channel_input_oclose(int type, int plen)
 {
        int id = packet_get_int();
@@ -1087,12 +1091,13 @@ channel_input_oclose(int type, int plen)
        chan_rcvd_oclose(c);
 }
 
        chan_rcvd_oclose(c);
 }
 
-void 
+void
 channel_input_close_confirmation(int type, int plen)
 {
        int id = packet_get_int();
        Channel *c = channel_lookup(id);
 
 channel_input_close_confirmation(int type, int plen)
 {
        int id = packet_get_int();
        Channel *c = channel_lookup(id);
 
+       packet_done();
        if (c == NULL)
                packet_disconnect("Received close confirmation for "
                    "out-of-range channel %d.", id);
        if (c == NULL)
                packet_disconnect("Received close confirmation for "
                    "out-of-range channel %d.", id);
@@ -1102,7 +1107,7 @@ channel_input_close_confirmation(int type, int plen)
        channel_free(c->self);
 }
 
        channel_free(c->self);
 }
 
-void 
+void
 channel_input_open_confirmation(int type, int plen)
 {
        int id, remote_id;
 channel_input_open_confirmation(int type, int plen)
 {
        int id, remote_id;
@@ -1125,6 +1130,7 @@ channel_input_open_confirmation(int type, int plen)
        if (compat20) {
                c->remote_window = packet_get_int();
                c->remote_maxpacket = packet_get_int();
        if (compat20) {
                c->remote_window = packet_get_int();
                c->remote_maxpacket = packet_get_int();
+               packet_done();
                if (c->cb_fn != NULL && c->cb_event == type) {
                        debug("callback start");
                        c->cb_fn(c->self, c->cb_arg);
                if (c->cb_fn != NULL && c->cb_event == type) {
                        debug("callback start");
                        c->cb_fn(c->self, c->cb_arg);
@@ -1135,7 +1141,7 @@ channel_input_open_confirmation(int type, int plen)
        }
 }
 
        }
 }
 
-void 
+void
 channel_input_open_failure(int type, int plen)
 {
        int id;
 channel_input_open_failure(int type, int plen)
 {
        int id;
@@ -1153,8 +1159,11 @@ channel_input_open_failure(int type, int plen)
        if (compat20) {
                int reason = packet_get_int();
                char *msg  = packet_get_string(NULL);
        if (compat20) {
                int reason = packet_get_int();
                char *msg  = packet_get_string(NULL);
+               char *lang  = packet_get_string(NULL);
                log("channel_open_failure: %d: reason %d: %s", id, reason, msg);
                log("channel_open_failure: %d: reason %d: %s", id, reason, msg);
+               packet_done();
                xfree(msg);
                xfree(msg);
+               xfree(lang);
        }
        /* Free the channel.  This will also close the socket. */
        channel_free(id);
        }
        /* Free the channel.  This will also close the socket. */
        channel_free(id);
@@ -1185,7 +1194,7 @@ debug("cb_fn %p cb_event %d", c->cb_fn , c->cb_event);
        }
 }
 
        }
 }
 
-void 
+void
 channel_input_window_adjust(int type, int plen)
 {
        Channel *c;
 channel_input_window_adjust(int type, int plen)
 {
        Channel *c;
@@ -1204,6 +1213,7 @@ channel_input_window_adjust(int type, int plen)
                return;
        }
        adjust = packet_get_int();
                return;
        }
        adjust = packet_get_int();
+       packet_done();
        debug("channel %d: rcvd adjust %d", id, adjust);
        c->remote_window += adjust;
 }
        debug("channel %d: rcvd adjust %d", id, adjust);
        c->remote_window += adjust;
 }
@@ -1213,7 +1223,7 @@ channel_input_window_adjust(int type, int plen)
  * might have.
  */
 
  * might have.
  */
 
-void 
+void
 channel_stop_listening()
 {
        int i;
 channel_stop_listening()
 {
        int i;
@@ -1240,7 +1250,7 @@ channel_stop_listening()
  * descriptors after a fork.
  */
 
  * descriptors after a fork.
  */
 
-void 
+void
 channel_close_all()
 {
        int i;
 channel_close_all()
 {
        int i;
@@ -1252,7 +1262,7 @@ channel_close_all()
 
 /* Returns the maximum file descriptor number used by the channels. */
 
 
 /* Returns the maximum file descriptor number used by the channels. */
 
-int 
+int
 channel_max_fd()
 {
        return channel_max_fd_value;
 channel_max_fd()
 {
        return channel_max_fd_value;
@@ -1260,7 +1270,7 @@ channel_max_fd()
 
 /* Returns true if any channel is still open. */
 
 
 /* Returns true if any channel is still open. */
 
-int 
+int
 channel_still_open()
 {
        unsigned int i;
 channel_still_open()
 {
        unsigned int i;
@@ -1347,7 +1357,7 @@ channel_open_message()
  * channel to host:port from remote side.
  */
 
  * channel to host:port from remote side.
  */
 
-void 
+void
 channel_request_local_forwarding(u_short port, const char *host,
                                 u_short host_port, int gateway_ports)
 {
 channel_request_local_forwarding(u_short port, const char *host,
                                 u_short host_port, int gateway_ports)
 {
@@ -1435,7 +1445,7 @@ channel_request_local_forwarding(u_short port, const char *host,
  * the secure channel to host:port from local side.
  */
 
  * the secure channel to host:port from local side.
  */
 
-void 
+void
 channel_request_remote_forwarding(u_short listen_port, const char *host_to_connect,
                                  u_short port_to_connect)
 {
 channel_request_remote_forwarding(u_short listen_port, const char *host_to_connect,
                                  u_short port_to_connect)
 {
@@ -1478,7 +1488,7 @@ channel_request_remote_forwarding(u_short listen_port, const char *host_to_conne
  * message if there was an error).  This never returns if there was an error.
  */
 
  * message if there was an error).  This never returns if there was an error.
  */
 
-void 
+void
 channel_input_port_forward_request(int is_root)
 {
        u_short port, host_port;
 channel_input_port_forward_request(int is_root)
 {
        u_short port, host_port;
@@ -1562,7 +1572,7 @@ channel_connect_to(const char *host, u_short host_port)
  * or CHANNEL_OPEN_FAILURE.
  */
 
  * or CHANNEL_OPEN_FAILURE.
  */
 
-void 
+void
 channel_input_port_open(int type, int plen)
 {
        u_short host_port;
 channel_input_port_open(int type, int plen)
 {
        u_short host_port;
@@ -1807,7 +1817,7 @@ connect_local_xsocket(unsigned int dnr)
  * with either SSH_MSG_OPEN_CONFIRMATION or SSH_MSG_OPEN_FAILURE.
  */
 
  * with either SSH_MSG_OPEN_CONFIRMATION or SSH_MSG_OPEN_FAILURE.
  */
 
-void 
+void
 x11_input_open(int type, int plen)
 {
        int remote_channel, display_number, sock = 0, newch;
 x11_input_open(int type, int plen)
 {
        int remote_channel, display_number, sock = 0, newch;
@@ -1911,7 +1921,7 @@ x11_input_open(int type, int plen)
        }
        freeaddrinfo(aitop);
        if (!ai) {
        }
        freeaddrinfo(aitop);
        if (!ai) {
-               error("connect %.100s port %d: %.100s", buf, 6000 + display_number, 
+               error("connect %.100s port %d: %.100s", buf, 6000 + display_number,
                    strerror(errno));
                goto fail;
        }
                    strerror(errno));
                goto fail;
        }
@@ -1945,7 +1955,7 @@ fail:
  * data, and enables authentication spoofing.
  */
 
  * data, and enables authentication spoofing.
  */
 
-void 
+void
 x11_request_forwarding_with_spoofing(const char *proto, const char *data)
 {
        unsigned int data_len = (unsigned int) strlen(data) / 2;
 x11_request_forwarding_with_spoofing(const char *proto, const char *data)
 {
        unsigned int data_len = (unsigned int) strlen(data) / 2;
@@ -2003,7 +2013,7 @@ x11_request_forwarding_with_spoofing(const char *proto, const char *data)
 
 /* Sends a message to the server to request authentication fd forwarding. */
 
 
 /* Sends a message to the server to request authentication fd forwarding. */
 
-void 
+void
 auth_request_forwarding()
 {
        packet_start(SSH_CMSG_AGENT_REQUEST_FORWARDING);
 auth_request_forwarding()
 {
        packet_start(SSH_CMSG_AGENT_REQUEST_FORWARDING);
@@ -2025,7 +2035,7 @@ auth_get_socket_name()
 
 /* removes the agent forwarding socket */
 
 
 /* removes the agent forwarding socket */
 
-void 
+void
 cleanup_socket(void)
 {
        remove(channel_forwarded_auth_socket_name);
 cleanup_socket(void)
 {
        remove(channel_forwarded_auth_socket_name);
@@ -2037,7 +2047,7 @@ cleanup_socket(void)
  * This starts forwarding authentication requests.
  */
 
  * This starts forwarding authentication requests.
  */
 
-void 
+void
 auth_input_request_forwarding(struct passwd * pw)
 {
        int sock, newch;
 auth_input_request_forwarding(struct passwd * pw)
 {
        int sock, newch;
@@ -2095,7 +2105,7 @@ auth_input_request_forwarding(struct passwd * pw)
 
 /* This is called to process an SSH_SMSG_AGENT_OPEN message. */
 
 
 /* This is called to process an SSH_SMSG_AGENT_OPEN message. */
 
-void 
+void
 auth_input_open_request(int type, int plen)
 {
        int remch, sock, newch;
 auth_input_open_request(int type, int plen)
 {
        int remch, sock, newch;
index d06c1f59c603ff5f259520f7fb3b98d5ba5931ba..9d98d04d08fed843dc036a47ae91a5483b3cd08c 100644 (file)
@@ -149,7 +149,7 @@ char   *channel_open_message(void);
  * channel to host:port from remote side.  This never returns if there was an
  * error.
  */
  * channel to host:port from remote side.  This never returns if there was an
  * error.
  */
-void 
+void
 channel_request_local_forwarding(u_short port, const char *host,
     u_short remote_port, int gateway_ports);
 
 channel_request_local_forwarding(u_short port, const char *host,
     u_short remote_port, int gateway_ports);
 
@@ -159,7 +159,7 @@ channel_request_local_forwarding(u_short port, const char *host,
  * there was an error.  This registers that open requests for that port are
  * permitted.
  */
  * there was an error.  This registers that open requests for that port are
  * permitted.
  */
-void 
+void
 channel_request_remote_forwarding(u_short port, const char *host,
     u_short remote_port);
 
 channel_request_remote_forwarding(u_short port, const char *host,
     u_short remote_port);
 
index c79257662f2652b144402fc1884d108446d57339..7122dfa86519b0ea941bd050093ccdcf6d1c920e 100644 (file)
--- a/cipher.c
+++ b/cipher.c
@@ -1,14 +1,14 @@
 /*
 /*
- * 
+ *
  * cipher.c
  * cipher.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Wed Apr 19 17:41:39 1995 ylo
  * Created: Wed Apr 19 17:41:39 1995 ylo
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
@@ -138,7 +138,7 @@ static char *cipher_names[] =
  * supported cipher.
  */
 
  * supported cipher.
  */
 
-unsigned int 
+unsigned int
 cipher_mask1()
 {
        unsigned int mask = 0;
 cipher_mask1()
 {
        unsigned int mask = 0;
@@ -146,7 +146,7 @@ cipher_mask1()
        mask |= 1 << SSH_CIPHER_BLOWFISH;
        return mask;
 }
        mask |= 1 << SSH_CIPHER_BLOWFISH;
        return mask;
 }
-unsigned int 
+unsigned int
 cipher_mask2()
 {
        unsigned int mask = 0;
 cipher_mask2()
 {
        unsigned int mask = 0;
@@ -156,7 +156,7 @@ cipher_mask2()
        mask |= 1 << SSH_CIPHER_CAST128_CBC;
        return mask;
 }
        mask |= 1 << SSH_CIPHER_CAST128_CBC;
        return mask;
 }
-unsigned int 
+unsigned int
 cipher_mask()
 {
        return cipher_mask1() | cipher_mask2();
 cipher_mask()
 {
        return cipher_mask1() | cipher_mask2();
@@ -218,7 +218,7 @@ cipher_number(const char *name)
  * passphrase and using the resulting 16 bytes as the key.
  */
 
  * passphrase and using the resulting 16 bytes as the key.
  */
 
-void 
+void
 cipher_set_key_string(CipherContext *context, int cipher, const char *passphrase)
 {
        MD5_CTX md;
 cipher_set_key_string(CipherContext *context, int cipher, const char *passphrase)
 {
        MD5_CTX md;
@@ -236,7 +236,7 @@ cipher_set_key_string(CipherContext *context, int cipher, const char *passphrase
 
 /* Selects the cipher to use and sets the key. */
 
 
 /* Selects the cipher to use and sets the key. */
 
-void 
+void
 cipher_set_key(CipherContext *context, int cipher, const unsigned char *key,
     int keylen)
 {
 cipher_set_key(CipherContext *context, int cipher, const unsigned char *key,
     int keylen)
 {
@@ -297,9 +297,9 @@ cipher_set_key(CipherContext *context, int cipher, const unsigned char *key,
        memset(padded, 0, sizeof(padded));
 }
 
        memset(padded, 0, sizeof(padded));
 }
 
-void 
+void
 cipher_set_key_iv(CipherContext * context, int cipher,
 cipher_set_key_iv(CipherContext * context, int cipher,
-    const unsigned char *key, int keylen, 
+    const unsigned char *key, int keylen,
     const unsigned char *iv, int ivlen)
 {
        /* Set cipher type. */
     const unsigned char *iv, int ivlen)
 {
        /* Set cipher type. */
@@ -357,7 +357,7 @@ cipher_set_key_iv(CipherContext * context, int cipher,
 
 /* Encrypts data using the cipher. */
 
 
 /* Encrypts data using the cipher. */
 
-void 
+void
 cipher_encrypt(CipherContext *context, unsigned char *dest,
               const unsigned char *src, unsigned int len)
 {
 cipher_encrypt(CipherContext *context, unsigned char *dest,
               const unsigned char *src, unsigned int len)
 {
@@ -379,14 +379,14 @@ cipher_encrypt(CipherContext *context, unsigned char *dest,
        case SSH_CIPHER_BLOWFISH:
                swap_bytes(src, dest, len);
                BF_cbc_encrypt(dest, dest, len,
        case SSH_CIPHER_BLOWFISH:
                swap_bytes(src, dest, len);
                BF_cbc_encrypt(dest, dest, len,
-                              &context->u.bf.key, context->u.bf.iv,
+                              &context->u.bf.key, context->u.bf.iv,
                               BF_ENCRYPT);
                swap_bytes(dest, dest, len);
                break;
 
        case SSH_CIPHER_BLOWFISH_CBC:
                BF_cbc_encrypt((void *)src, dest, len,
                               BF_ENCRYPT);
                swap_bytes(dest, dest, len);
                break;
 
        case SSH_CIPHER_BLOWFISH_CBC:
                BF_cbc_encrypt((void *)src, dest, len,
-                              &context->u.bf.key, context->u.bf.iv,
+                              &context->u.bf.key, context->u.bf.iv,
                               BF_ENCRYPT);
                break;
 
                               BF_ENCRYPT);
                break;
 
@@ -412,7 +412,7 @@ cipher_encrypt(CipherContext *context, unsigned char *dest,
 
 /* Decrypts data using the cipher. */
 
 
 /* Decrypts data using the cipher. */
 
-void 
+void
 cipher_decrypt(CipherContext *context, unsigned char *dest,
               const unsigned char *src, unsigned int len)
 {
 cipher_decrypt(CipherContext *context, unsigned char *dest,
               const unsigned char *src, unsigned int len)
 {
index 3d3909385aac40230247e68a1478fe8482896e54..37ca25176ddda864c250075cb82321457eb7fac9 100644 (file)
--- a/cipher.h
+++ b/cipher.h
@@ -1,14 +1,14 @@
 /*
 /*
- * 
+ *
  * cipher.h
  * cipher.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Wed Apr 19 16:50:42 1995 ylo
  * Created: Wed Apr 19 16:50:42 1995 ylo
- * 
+ *
  */
 
 /* RCSID("$Id$"); */
  */
 
 /* RCSID("$Id$"); */
@@ -95,29 +95,29 @@ int     ciphers_valid(const char *names);
  * Selects the cipher to use and sets the key.  If for_encryption is true,
  * the key is setup for encryption; otherwise it is setup for decryption.
  */
  * Selects the cipher to use and sets the key.  If for_encryption is true,
  * the key is setup for encryption; otherwise it is setup for decryption.
  */
-void 
+void
 cipher_set_key(CipherContext * context, int cipher,
     const unsigned char *key, int keylen);
 cipher_set_key(CipherContext * context, int cipher,
     const unsigned char *key, int keylen);
-void 
+void
 cipher_set_key_iv(CipherContext * context, int cipher,
 cipher_set_key_iv(CipherContext * context, int cipher,
-    const unsigned char *key, int keylen, 
+    const unsigned char *key, int keylen,
     const unsigned char *iv, int ivlen);
 
 /*
  * Sets key for the cipher by computing the MD5 checksum of the passphrase,
  * and using the resulting 16 bytes as the key.
  */
     const unsigned char *iv, int ivlen);
 
 /*
  * Sets key for the cipher by computing the MD5 checksum of the passphrase,
  * and using the resulting 16 bytes as the key.
  */
-void 
+void
 cipher_set_key_string(CipherContext * context, int cipher,
     const char *passphrase);
 
 /* Encrypts data using the cipher. */
 cipher_set_key_string(CipherContext * context, int cipher,
     const char *passphrase);
 
 /* Encrypts data using the cipher. */
-void 
+void
 cipher_encrypt(CipherContext * context, unsigned char *dest,
     const unsigned char *src, unsigned int len);
 
 /* Decrypts data using the cipher. */
 cipher_encrypt(CipherContext * context, unsigned char *dest,
     const unsigned char *src, unsigned int len);
 
 /* Decrypts data using the cipher. */
-void 
+void
 cipher_decrypt(CipherContext * context, unsigned char *dest,
     const unsigned char *src, unsigned int len);
 
 cipher_decrypt(CipherContext * context, unsigned char *dest,
     const unsigned char *src, unsigned int len);
 
index 5d599a2809cbcd18f6f08f9396784512a249cf6f..2ab96fa5b8fcf1f46e662bcf1c0e49c3b5b900ba 100644 (file)
@@ -1,17 +1,17 @@
 /*
 /*
- * 
+ *
  * clientloop.c
  * clientloop.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
- * 
+ *
+ *
  * Created: Sat Sep 23 12:23:57 1995 ylo
  * Created: Sat Sep 23 12:23:57 1995 ylo
- * 
+ *
  * The main loop for the interactive session (client side).
  * The main loop for the interactive session (client side).
- * 
+ *
  * SSH2 support added by Markus Friedl.
  */
 
  * SSH2 support added by Markus Friedl.
  */
 
@@ -83,7 +83,7 @@ int   session_ident = -1;
 
 /* Returns the user\'s terminal to normal mode if it had been put in raw mode. */
 
 
 /* Returns the user\'s terminal to normal mode if it had been put in raw mode. */
 
-void 
+void
 leave_raw_mode()
 {
        if (!in_raw_mode)
 leave_raw_mode()
 {
        if (!in_raw_mode)
@@ -97,7 +97,7 @@ leave_raw_mode()
 
 /* Puts the user\'s terminal in raw mode. */
 
 
 /* Puts the user\'s terminal in raw mode. */
 
-void 
+void
 enter_raw_mode()
 {
        struct termios tio;
 enter_raw_mode()
 {
        struct termios tio;
@@ -123,7 +123,7 @@ enter_raw_mode()
 
 /* Restores stdin to blocking mode. */
 
 
 /* Restores stdin to blocking mode. */
 
-void 
+void
 leave_non_blocking()
 {
        if (in_non_blocking_mode) {
 leave_non_blocking()
 {
        if (in_non_blocking_mode) {
@@ -135,7 +135,7 @@ leave_non_blocking()
 
 /* Puts stdin terminal in non-blocking mode. */
 
 
 /* Puts stdin terminal in non-blocking mode. */
 
-void 
+void
 enter_non_blocking()
 {
        in_non_blocking_mode = 1;
 enter_non_blocking()
 {
        in_non_blocking_mode = 1;
@@ -148,7 +148,7 @@ enter_non_blocking()
  * flag indicating that the window has changed.
  */
 
  * flag indicating that the window has changed.
  */
 
-void 
+void
 window_change_handler(int sig)
 {
        received_window_change_signal = 1;
 window_change_handler(int sig)
 {
        received_window_change_signal = 1;
@@ -160,7 +160,7 @@ window_change_handler(int sig)
  * signals must be trapped to restore terminal modes.
  */
 
  * signals must be trapped to restore terminal modes.
  */
 
-void 
+void
 signal_handler(int sig)
 {
        if (in_raw_mode)
 signal_handler(int sig)
 {
        if (in_raw_mode)
@@ -177,7 +177,7 @@ signal_handler(int sig)
  * available resolution.
  */
 
  * available resolution.
  */
 
-double 
+double
 get_current_time()
 {
        struct timeval tv;
 get_current_time()
 {
        struct timeval tv;
@@ -191,7 +191,7 @@ get_current_time()
  * not appear to wake up when redirecting from /dev/null.
  */
 
  * not appear to wake up when redirecting from /dev/null.
  */
 
-void 
+void
 client_check_initial_eof_on_stdin()
 {
        int len;
 client_check_initial_eof_on_stdin()
 {
        int len;
@@ -245,7 +245,7 @@ client_check_initial_eof_on_stdin()
  * connection.
  */
 
  * connection.
  */
 
-void 
+void
 client_make_packets_from_stdin_data()
 {
        unsigned int len;
 client_make_packets_from_stdin_data()
 {
        unsigned int len;
@@ -276,7 +276,7 @@ client_make_packets_from_stdin_data()
  * appropriate.
  */
 
  * appropriate.
  */
 
-void 
+void
 client_check_window_change()
 {
        struct winsize ws;
 client_check_window_change()
 {
        struct winsize ws;
@@ -313,7 +313,7 @@ client_check_window_change()
  * one of the file descriptors).
  */
 
  * one of the file descriptors).
  */
 
-void 
+void
 client_wait_until_can_do_something(fd_set * readset, fd_set * writeset)
 {
        /*debug("client_wait_until_can_do_something"); */
 client_wait_until_can_do_something(fd_set * readset, fd_set * writeset)
 {
        /*debug("client_wait_until_can_do_something"); */
@@ -380,7 +380,7 @@ client_wait_until_can_do_something(fd_set * readset, fd_set * writeset)
        }
 }
 
        }
 }
 
-void 
+void
 client_suspend_self()
 {
        struct winsize oldws, newws;
 client_suspend_self()
 {
        struct winsize oldws, newws;
@@ -425,7 +425,7 @@ client_suspend_self()
        enter_raw_mode();
 }
 
        enter_raw_mode();
 }
 
-void 
+void
 client_process_net_input(fd_set * readset)
 {
        int len;
 client_process_net_input(fd_set * readset)
 {
        int len;
@@ -468,7 +468,7 @@ client_process_net_input(fd_set * readset)
        }
 }
 
        }
 }
 
-void 
+void
 client_process_input(fd_set * readset)
 {
        int len, pid;
 client_process_input(fd_set * readset)
 {
        int len, pid;
@@ -657,7 +657,7 @@ Supported escape sequences:\r\n\
        }
 }
 
        }
 }
 
-void 
+void
 client_process_output(fd_set * writeset)
 {
        int len;
 client_process_output(fd_set * writeset)
 {
        int len;
@@ -717,7 +717,7 @@ client_process_output(fd_set * writeset)
  * preparatory phase.
  */
 
  * preparatory phase.
  */
 
-void 
+void
 client_process_buffered_input_packets()
 {
        dispatch_run(DISPATCH_NONBLOCK, &quit_pending);
 client_process_buffered_input_packets()
 {
        dispatch_run(DISPATCH_NONBLOCK, &quit_pending);
@@ -730,7 +730,7 @@ client_process_buffered_input_packets()
  * character for terminating or suspending the session.
  */
 
  * character for terminating or suspending the session.
  */
 
-int 
+int
 client_loop(int have_pty, int escape_char_arg)
 {
        extern Options options;
 client_loop(int have_pty, int escape_char_arg)
 {
        extern Options options;
@@ -953,7 +953,7 @@ client_input_exit_status(int type, int plen)
        quit_pending = 1;
 }
 
        quit_pending = 1;
 }
 
-void 
+void
 client_init_dispatch_20()
 {
        dispatch_init(&dispatch_protocol_error);
 client_init_dispatch_20()
 {
        dispatch_init(&dispatch_protocol_error);
@@ -966,7 +966,7 @@ client_init_dispatch_20()
        dispatch_set(SSH2_MSG_CHANNEL_REQUEST, &channel_input_channel_request);
        dispatch_set(SSH2_MSG_CHANNEL_WINDOW_ADJUST, &channel_input_window_adjust);
 }
        dispatch_set(SSH2_MSG_CHANNEL_REQUEST, &channel_input_channel_request);
        dispatch_set(SSH2_MSG_CHANNEL_WINDOW_ADJUST, &channel_input_window_adjust);
 }
-void 
+void
 client_init_dispatch_13()
 {
        dispatch_init(NULL);
 client_init_dispatch_13()
 {
        dispatch_init(NULL);
@@ -983,14 +983,14 @@ client_init_dispatch_13()
        dispatch_set(SSH_SMSG_STDOUT_DATA, &client_input_stdout_data);
        dispatch_set(SSH_SMSG_X11_OPEN, &x11_input_open);
 }
        dispatch_set(SSH_SMSG_STDOUT_DATA, &client_input_stdout_data);
        dispatch_set(SSH_SMSG_X11_OPEN, &x11_input_open);
 }
-void 
+void
 client_init_dispatch_15()
 {
        client_init_dispatch_13();
        dispatch_set(SSH_MSG_CHANNEL_CLOSE, &channel_input_ieof);
        dispatch_set(SSH_MSG_CHANNEL_CLOSE_CONFIRMATION, & channel_input_oclose);
 }
 client_init_dispatch_15()
 {
        client_init_dispatch_13();
        dispatch_set(SSH_MSG_CHANNEL_CLOSE, &channel_input_ieof);
        dispatch_set(SSH_MSG_CHANNEL_CLOSE_CONFIRMATION, & channel_input_oclose);
 }
-void 
+void
 client_init_dispatch()
 {
        if (compat20)
 client_init_dispatch()
 {
        if (compat20)
@@ -1027,6 +1027,7 @@ client_input_channel_req(int id, void *arg)
        } else if (strcmp(rtype, "exit-status") == 0) {
                success = 1;
                exit_status = packet_get_int();
        } else if (strcmp(rtype, "exit-status") == 0) {
                success = 1;
                exit_status = packet_get_int();
+               packet_done();
        }
        if (reply) {
                packet_start(success ?
        }
        if (reply) {
                packet_start(success ?
index e3b6db2dc332003accc1188956f4b98a5c8c49f6..e4abaa02a492140601f793d7ec6b29142de743db 100644 (file)
--- a/compat.c
+++ b/compat.c
@@ -39,14 +39,14 @@ int compat13 = 0;
 int compat20 = 0;
 int datafellows = 0;
 
 int compat20 = 0;
 int datafellows = 0;
 
-void 
+void
 enable_compat20(void)
 {
        verbose("Enabling compatibility mode for protocol 2.0");
        compat20 = 1;
        packet_set_ssh2_format();
 }
 enable_compat20(void)
 {
        verbose("Enabling compatibility mode for protocol 2.0");
        compat20 = 1;
        packet_set_ssh2_format();
 }
-void 
+void
 enable_compat13(void)
 {
        verbose("Enabling compatibility mode for protocol 1.3");
 enable_compat13(void)
 {
        verbose("Enabling compatibility mode for protocol 1.3");
index e8ba760f1ba840f82cd61d0e0fc0d80c84e4b0ad..cc974ce4433f7aa7ba646fa12f354371cc75f33a 100644 (file)
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * compress.c
  * compress.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Wed Oct 25 22:12:46 1995 ylo
  * Created: Wed Oct 25 22:12:46 1995 ylo
- * 
+ *
  * Interface to packet compression for ssh.
  * Interface to packet compression for ssh.
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
@@ -28,7 +28,7 @@ static z_stream outgoing_stream;
  * (as in gzip).
  */
 
  * (as in gzip).
  */
 
-void 
+void
 buffer_compress_init(int level)
 {
        debug("Enabling compression at level %d.", level);
 buffer_compress_init(int level)
 {
        debug("Enabling compression at level %d.", level);
@@ -40,7 +40,7 @@ buffer_compress_init(int level)
 
 /* Frees any data structures allocated for compression. */
 
 
 /* Frees any data structures allocated for compression. */
 
-void 
+void
 buffer_compress_uninit()
 {
        debug("compress outgoing: raw data %lu, compressed %lu, factor %.2f",
 buffer_compress_uninit()
 {
        debug("compress outgoing: raw data %lu, compressed %lu, factor %.2f",
@@ -64,7 +64,7 @@ buffer_compress_uninit()
  * receiver.  This appends the compressed data to the output buffer.
  */
 
  * receiver.  This appends the compressed data to the output buffer.
  */
 
-void 
+void
 buffer_compress(Buffer * input_buffer, Buffer * output_buffer)
 {
        char buf[4096];
 buffer_compress(Buffer * input_buffer, Buffer * output_buffer)
 {
        char buf[4096];
@@ -108,7 +108,7 @@ buffer_compress(Buffer * input_buffer, Buffer * output_buffer)
  * with that.  This appends the uncompressed data to the output buffer.
  */
 
  * with that.  This appends the uncompressed data to the output buffer.
  */
 
-void 
+void
 buffer_uncompress(Buffer * input_buffer, Buffer * output_buffer)
 {
        char buf[4096];
 buffer_uncompress(Buffer * input_buffer, Buffer * output_buffer)
 {
        char buf[4096];
index dfb47f4a2f8642dc66e9290e380953ba545b8521..ebe4e48f00b8eb8bba1f21a8dc206eb7ca122499 100644 (file)
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * compress.h
  * compress.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Wed Oct 25 22:12:46 1995 ylo
  * Created: Wed Oct 25 22:12:46 1995 ylo
- * 
+ *
  * Interface to packet compression for ssh.
  * Interface to packet compression for ssh.
- * 
+ *
  */
 
 /* RCSID("$Id$"); */
  */
 
 /* RCSID("$Id$"); */
diff --git a/crc32.h b/crc32.h
index f7b8a0c371a365e24cc42eefcee92f6986b48d36..545cac3b87c100b5603a6e718cd5f0ac11db026a 100644 (file)
--- a/crc32.h
+++ b/crc32.h
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * crc32.h
  * crc32.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1992 Tatu Ylonen, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1992 Tatu Ylonen, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Tue Feb 11 14:37:27 1992 ylo
  * Created: Tue Feb 11 14:37:27 1992 ylo
- * 
+ *
  * Functions for computing 32-bit CRC.
  * Functions for computing 32-bit CRC.
- * 
+ *
  */
 
 /* RCSID("$Id$"); */
  */
 
 /* RCSID("$Id$"); */
diff --git a/dispatch.c b/dispatch.c
new file mode 100644 (file)
index 0000000..b1e3460
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2000 Markus Friedl.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ *    must display the following acknowledgement:
+ *      This product includes software developed by Markus Friedl.
+ * 4. The name of the author may not be used to endorse or promote products
+ *    derived from this software without specific prior written permission.
+ *
+ * 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.
+ */
+#include "includes.h"
+RCSID("$Id$");
+#include "ssh.h"
+#include "dispatch.h"
+#include "packet.h"
+
+#define DISPATCH_MIN   0
+#define DISPATCH_MAX   255
+
+dispatch_fn *dispatch[DISPATCH_MAX];
+
+void
+dispatch_protocol_error(int type, int plen)
+{
+       error("Hm, dispatch protocol error: type %d plen %d", type, plen);
+}
+void
+dispatch_init(dispatch_fn *dflt)
+{
+       int i;
+       for (i = 0; i < DISPATCH_MAX; i++)
+               dispatch[i] = dflt;
+}
+void
+dispatch_set(int type, dispatch_fn *fn)
+{
+       dispatch[type] = fn;
+}
+void
+dispatch_run(int mode, int *done)
+{
+       for (;;) {
+               int plen;
+               int type;
+
+               if (mode == DISPATCH_BLOCK) {
+                       type = packet_read(&plen);
+               } else {
+                       type = packet_read_poll(&plen);
+                       if (type == SSH_MSG_NONE)
+                               return;
+               }
+               if (type > 0 && type < DISPATCH_MAX && dispatch[type] != NULL)
+                       (*dispatch[type])(type, plen);
+               else
+                       packet_disconnect("protocol error: rcvd type %d", type);        
+               if (done != NULL && *done)
+                       return;
+       }
+}
diff --git a/dsa.c b/dsa.c
index 3c1a5f461aec42f3705b3ae2c754fb6da8cd015d..e647c75912bcd109b7d2cb3518d0ea6fb5536d28 100644 (file)
--- a/dsa.c
+++ b/dsa.c
@@ -108,7 +108,7 @@ dsa_load_private(char *filename)
        in = BIO_new(BIO_s_file());
        if (in == NULL)
                fatal("BIO_new failed");
        in = BIO_new(BIO_s_file());
        if (in == NULL)
                fatal("BIO_new failed");
-       if (BIO_read_filename(in, filename) <= 0) 
+       if (BIO_read_filename(in, filename) <= 0)
                fatal("BIO_read failed %s: %s", filename, strerror(errno));
        fprintf(stderr, "read DSA private key\n");
        dsa = PEM_read_bio_DSAPrivateKey(in,NULL,NULL,NULL);
                fatal("BIO_read failed %s: %s", filename, strerror(errno));
        fprintf(stderr, "read DSA private key\n");
        dsa = PEM_read_bio_DSAPrivateKey(in,NULL,NULL,NULL);
@@ -182,9 +182,9 @@ dsa_sign(
 
        sig = DSA_do_sign(digest, evp_md->md_size, key->dsa);
 
 
        sig = DSA_do_sign(digest, evp_md->md_size, key->dsa);
 
-        rlen = BN_num_bytes(sig->r);
-        slen = BN_num_bytes(sig->s);
-        if (rlen > INTBLOB_LEN || slen > INTBLOB_LEN) {
+       rlen = BN_num_bytes(sig->r);
+       slen = BN_num_bytes(sig->s);
+       if (rlen > INTBLOB_LEN || slen > INTBLOB_LEN) {
                error("bad sig size %d %d", rlen, slen);
                DSA_SIG_free(sig);
                return -1;
                error("bad sig size %d %d", rlen, slen);
                DSA_SIG_free(sig);
                return -1;
index ac564c007e262703e33581a65a79b4721ecb0db6..b9d8654625aa317f49802ac22dee6db564f13776 100644 (file)
--- a/getput.h
+++ b/getput.h
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * getput.h
  * getput.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Wed Jun 28 22:36:30 1995 ylo
  * Created: Wed Jun 28 22:36:30 1995 ylo
- * 
+ *
  * Macros for storing and retrieving data in msb first and lsb first order.
  * Macros for storing and retrieving data in msb first and lsb first order.
- * 
+ *
  */
 
 /* RCSID("$Id$"); */
  */
 
 /* RCSID("$Id$"); */
@@ -21,7 +21,7 @@
 /*------------ macros for storing/extracting msb first words -------------*/
 
 #define GET_32BIT(cp) (((unsigned long)(unsigned char)(cp)[0] << 24) | \
 /*------------ macros for storing/extracting msb first words -------------*/
 
 #define GET_32BIT(cp) (((unsigned long)(unsigned char)(cp)[0] << 24) | \
-                      ((unsigned long)(unsigned char)(cp)[1] << 16) | \
+                      ((unsigned long)(unsigned char)(cp)[1] << 16) | \
                       ((unsigned long)(unsigned char)(cp)[2] << 8) | \
                       ((unsigned long)(unsigned char)(cp)[3]))
 
                       ((unsigned long)(unsigned char)(cp)[2] << 8) | \
                       ((unsigned long)(unsigned char)(cp)[3]))
 
index c594c29aa0bf282c8279613c7012e29057d83717..b027075afad172c754947c8ad21845e4d991a9f9 100644 (file)
@@ -1,20 +1,20 @@
 /*
 /*
- * 
+ *
  * hostfile.c
  * hostfile.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Thu Jun 29 07:10:56 1995 ylo
  * Created: Thu Jun 29 07:10:56 1995 ylo
- * 
+ *
  * Functions for manipulating the known hosts files.
  * Functions for manipulating the known hosts files.
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: hostfile.c,v 1.15 2000/04/12 09:39:10 markus Exp $");
+RCSID("$OpenBSD: hostfile.c,v 1.16 2000/04/14 10:30:31 markus Exp $");
 
 #ifdef HAVE_OPENSSL
 #include <openssl/bn.h>
 
 #ifdef HAVE_OPENSSL
 #include <openssl/bn.h>
index 64fe185da9fa9fd79cbc58935ab1fac73621b8e4..c9bdd7f2e495ba4582ac6930d4fdbc79fc5dcdb5 100644 (file)
@@ -10,7 +10,7 @@
 typedef enum {
        HOST_OK, HOST_NEW, HOST_CHANGED
 }       HostStatus;
 typedef enum {
        HOST_OK, HOST_NEW, HOST_CHANGED
 }       HostStatus;
-HostStatus 
+HostStatus
 check_host_in_hostfile(const char *filename, const char *host, Key *key, Key *found);
 
 /*
 check_host_in_hostfile(const char *filename, const char *host, Key *key, Key *found);
 
 /*
index 746e76e588ed80f050fb399308b2ee53334636c8..51226676237437924c4e0075368fa844fcd43481 100644 (file)
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * includes.h
  * includes.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Thu Mar 23 16:29:37 1995 ylo
  * Created: Thu Mar 23 16:29:37 1995 ylo
- * 
+ *
  * This file includes most of the needed system headers.
  * This file includes most of the needed system headers.
- * 
+ *
  */
 
 #ifndef INCLUDES_H
  */
 
 #ifndef INCLUDES_H
diff --git a/kex.c b/kex.c
index 3082b73f2488f5110918230a54110646867f54d1..32ca422e92449a7cda4480233d4c0814ac95a235 100644 (file)
--- a/kex.c
+++ b/kex.c
@@ -149,12 +149,12 @@ void
 dump_digest(unsigned char *digest, int len)
 {
        int i;
 dump_digest(unsigned char *digest, int len)
 {
        int i;
-        for (i = 0; i< len; i++){
-                fprintf(stderr, "%02x", digest[i]);
+       for (i = 0; i< len; i++){
+               fprintf(stderr, "%02x", digest[i]);
                if(i%2!=0)
                        fprintf(stderr, " ");
        }
                if(i%2!=0)
                        fprintf(stderr, " ");
        }
-        fprintf(stderr, "\n");
+       fprintf(stderr, "\n");
 }
 
 unsigned char *
 }
 
 unsigned char *
@@ -201,7 +201,7 @@ kex_hash(
        buffer_free(&b);
 
 #ifdef DEBUG_KEX
        buffer_free(&b);
 
 #ifdef DEBUG_KEX
-        dump_digest(digest, evp_md->md_size);
+       dump_digest(digest, evp_md->md_size);
 #endif
        return digest;
 }
 #endif
        return digest;
 }
@@ -345,7 +345,7 @@ choose_kex(Kex *k, char *client, char *server)
        k->name = get_match(client, server);
        if (k->name == NULL)
                fatal("no kex alg");
        k->name = get_match(client, server);
        if (k->name == NULL)
                fatal("no kex alg");
-       if (strcmp(k->name, KEX_DH1) != 0)
+       if (strcmp(k->name, KEX_DH1) != 0)
                fatal("bad kex alg %s", k->name);
 }
 void
                fatal("bad kex alg %s", k->name);
 }
 void
index 7726631bc6d9ec56f2e02f1ede323aa43836edb9..04eb6433daf82428fd5aecbfd414840e58b8e29c 100644 (file)
@@ -1,17 +1,17 @@
 /*
 /*
- * 
+ *
  * log-client.c
  * log-client.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Mon Mar 20 21:13:40 1995 ylo
  * Created: Mon Mar 20 21:13:40 1995 ylo
- * 
+ *
  * Client-side versions of debug(), log(), etc.  These print to stderr.
  * This is a stripped down version of log-server.c.
  * Client-side versions of debug(), log(), etc.  These print to stderr.
  * This is a stripped down version of log-server.c.
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
index 5478e3189d8e0371b6fcbfb0251872a183b8af25..fb6f68659d28ecde1c29e86437c5bf87848b1422 100644 (file)
@@ -1,17 +1,17 @@
 /*
 /*
- * 
+ *
  * log-server.c
  * log-server.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Mon Mar 20 21:19:30 1995 ylo
  * Created: Mon Mar 20 21:19:30 1995 ylo
- * 
+ *
  * Server-side versions of debug(), log(), etc.  These normally send the output
  * to the system log.
  * Server-side versions of debug(), log(), etc.  These normally send the output
  * to the system log.
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
@@ -38,7 +38,7 @@ static int log_facility = LOG_AUTH;
  *   level     logging level
  */
 
  *   level     logging level
  */
 
-void 
+void
 log_init(char *av0, LogLevel level, SyslogFacility facility, int on_stderr)
 {
        switch (level) {
 log_init(char *av0, LogLevel level, SyslogFacility facility, int on_stderr)
 {
        switch (level) {
diff --git a/login.c b/login.c
index 838f37fe0f1b3ed10fa504ee2c617d7a29488f29..860257fe0bb2a0f75abd0424d4b094d162b2d885 100644 (file)
--- a/login.c
+++ b/login.c
@@ -1,20 +1,20 @@
 /*
 /*
- * 
+ *
  * login.c
  * login.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Fri Mar 24 14:51:08 1995 ylo
  * Created: Fri Mar 24 14:51:08 1995 ylo
- * 
+ *
  * This file performs some of the things login(1) normally does.  We cannot
  * easily use something like login -p -h host -f user, because there are
  * several different logins around, and it is hard to determined what kind of
  * login the current system has.  Also, we want to be able to execute commands
  * on a tty.
  * This file performs some of the things login(1) normally does.  We cannot
  * easily use something like login -p -h host -f user, because there are
  * several different logins around, and it is hard to determined what kind of
  * login the current system has.  Also, we want to be able to execute commands
  * on a tty.
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
@@ -49,7 +49,7 @@ RCSID("$Id$");
  * is found).  The name of the host used last time is returned in buf.
  */
 
  * is found).  The name of the host used last time is returned in buf.
  */
 
-unsigned long 
+unsigned long
 get_last_login_time(uid_t uid, const char *logname,
                    char *buf, unsigned int bufsize)
 {
 get_last_login_time(uid_t uid, const char *logname,
                    char *buf, unsigned int bufsize)
 {
@@ -135,7 +135,7 @@ get_last_login_time(uid_t uid, const char *logname,
  * were more standardized.
  */
 
  * were more standardized.
  */
 
-void 
+void
 record_login(int pid, const char *ttyname, const char *user, uid_t uid,
             const char *host, struct sockaddr * addr)
 {
 record_login(int pid, const char *ttyname, const char *user, uid_t uid,
             const char *host, struct sockaddr * addr)
 {
@@ -273,7 +273,7 @@ record_login(int pid, const char *ttyname, const char *user, uid_t uid,
 
 /* Records that the user has logged out. */
 
 
 /* Records that the user has logged out. */
 
-void 
+void
 record_logout(int pid, const char *ttyname)
 {
 #ifdef HAVE_LIBUTIL_LOGIN
 record_logout(int pid, const char *ttyname)
 {
 #ifdef HAVE_LIBUTIL_LOGIN
diff --git a/match.c b/match.c
index 44d2584ad9e968bc4513377ff32f558eea00f28f..5d076ff9e7a842bf32f1685b0d283be9e16b8bc8 100644 (file)
--- a/match.c
+++ b/match.c
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * match.c
  * match.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Thu Jun 22 01:17:50 1995 ylo
  * Created: Thu Jun 22 01:17:50 1995 ylo
- * 
+ *
  * Simple pattern matching, with '*' and '?' as wildcards.
  * Simple pattern matching, with '*' and '?' as wildcards.
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
@@ -23,7 +23,7 @@ RCSID("$Id$");
  * and * as wildcards), and zero if it does not match.
  */
 
  * and * as wildcards), and zero if it does not match.
  */
 
-int 
+int
 match_pattern(const char *s, const char *pattern)
 {
        for (;;) {
 match_pattern(const char *s, const char *pattern)
 {
        for (;;) {
diff --git a/mpaux.c b/mpaux.c
index d37de0e9e3ab546aadb04eea79d43c514ad9a528..21109083f324e75cd39c5ae81f1b880f764f217e 100644 (file)
--- a/mpaux.c
+++ b/mpaux.c
@@ -1,17 +1,17 @@
 /*
 /*
- * 
+ *
  * mpaux.c
  * mpaux.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Sun Jul 16 04:29:30 1995 ylo
  * Created: Sun Jul 16 04:29:30 1995 ylo
- * 
+ *
  * This file contains various auxiliary functions related to multiple
  * precision integers.
  * This file contains various auxiliary functions related to multiple
  * precision integers.
- * 
+ *
 */
 
 #include "includes.h"
 */
 
 #include "includes.h"
diff --git a/mpaux.h b/mpaux.h
index eef8ea63fc664da40c2923446fd1ea9781d52dd6..75d1da9f0e93134a7b3946458a4966087d4c5b81 100644 (file)
--- a/mpaux.h
+++ b/mpaux.h
@@ -1,14 +1,14 @@
 /*
 /*
- * 
+ *
  * mpaux.h
  * mpaux.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Sun Jul 16 04:29:30 1995 ylo
  * Created: Sun Jul 16 04:29:30 1995 ylo
- * 
+ *
  * This file contains various auxiliary functions related to multiple
  * precision integers.
  */
  * This file contains various auxiliary functions related to multiple
  * precision integers.
  */
@@ -23,7 +23,7 @@
  * session id is computed by concatenating the linearized, msb first
  * representations of host_key_n, session_key_n, and the cookie.
  */
  * session id is computed by concatenating the linearized, msb first
  * representations of host_key_n, session_key_n, and the cookie.
  */
-void 
+void
 compute_session_id(unsigned char session_id[16],
     unsigned char cookie[8],
     BIGNUM * host_key_n,
 compute_session_id(unsigned char session_id[16],
     unsigned char cookie[8],
     BIGNUM * host_key_n,
diff --git a/nchan.c b/nchan.c
index b4a085f16e91ca7172054093ad81eeb6e1b26e1a..cef94323908a4629a79d63454f13cb5b82e3d0d1 100644 (file)
--- a/nchan.c
+++ b/nchan.c
@@ -389,11 +389,11 @@ chan_delete_if_full_closed2(Channel *c)
                if (!(c->flags & CHAN_CLOSE_SENT)) {
                        chan_send_close2(c);
                }
                if (!(c->flags & CHAN_CLOSE_SENT)) {
                        chan_send_close2(c);
                }
-               if ((c->flags & CHAN_CLOSE_SENT) && 
+               if ((c->flags & CHAN_CLOSE_SENT) &&
                    (c->flags & CHAN_CLOSE_RCVD)) {
                        debug("channel %d: full closed2", c->self);
                        channel_free(c->self);
                    (c->flags & CHAN_CLOSE_RCVD)) {
                        debug("channel %d: full closed2", c->self);
                        channel_free(c->self);
-               } 
+               }
        }
 }
 
        }
 }
 
index d50e26071ef21b40f42049bced9d254643989535..4000698c7520783f353ec0b77793b2096037965c 100644 (file)
--- a/packet.c
+++ b/packet.c
@@ -1,14 +1,14 @@
 /*
 /*
- * 
+ *
  * packet.c
  * packet.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Sat Mar 18 02:40:40 1995 ylo
  * Created: Sat Mar 18 02:40:40 1995 ylo
- * 
+ *
  * This file contains code implementing the packet protocol and communication
  * with the other side.  This same code is used both on client and server side.
  *
  * This file contains code implementing the packet protocol and communication
  * with the other side.  This same code is used both on client and server side.
  *
@@ -529,7 +529,7 @@ packet_send2()
        unsigned int packet_length = 0;
        unsigned int i, padlen, len;
        u_int32_t rand = 0;
        unsigned int packet_length = 0;
        unsigned int i, padlen, len;
        u_int32_t rand = 0;
-        static unsigned int seqnr = 0;
+       static unsigned int seqnr = 0;
        int type;
        Enc *enc   = NULL;
        Mac *mac   = NULL;
        int type;
        Enc *enc   = NULL;
        Mac *mac   = NULL;
@@ -611,9 +611,9 @@ packet_send2()
        fprintf(stderr, "encrypted: ");
        buffer_dump(&output);
 #endif
        fprintf(stderr, "encrypted: ");
        buffer_dump(&output);
 #endif
-        /* increment sequence number for outgoing packets */
-        if (++seqnr == 0)
-                log("outgoing seqnr wraps around");
+       /* increment sequence number for outgoing packets */
+       if (++seqnr == 0)
+               log("outgoing seqnr wraps around");
        buffer_clear(&outgoing_packet);
 
        if (type == SSH2_MSG_NEWKEYS) {
        buffer_clear(&outgoing_packet);
 
        if (type == SSH2_MSG_NEWKEYS) {
@@ -877,7 +877,7 @@ packet_read_poll2(int *payload_len_ptr)
         * compute MAC over seqnr and packet,
         * increment sequence number for incoming packet
         */
         * compute MAC over seqnr and packet,
         * increment sequence number for incoming packet
         */
-        if (mac && mac->enabled) {
+       if (mac && mac->enabled) {
                macbuf = hmac( mac->md, seqnr,
                    (unsigned char *) buffer_ptr(&incoming_packet),
                    buffer_len(&incoming_packet),
                macbuf = hmac( mac->md, seqnr,
                    (unsigned char *) buffer_ptr(&incoming_packet),
                    buffer_len(&incoming_packet),
@@ -888,8 +888,8 @@ packet_read_poll2(int *payload_len_ptr)
                DBG(debug("HMAC #%d ok", seqnr));
                buffer_consume(&input, mac->mac_len);
        }
                DBG(debug("HMAC #%d ok", seqnr));
                buffer_consume(&input, mac->mac_len);
        }
-        if (++seqnr == 0)
-                log("incoming seqnr wraps around");
+       if (++seqnr == 0)
+               log("incoming seqnr wraps around");
 
        /* get padlen */
        cp = buffer_ptr(&incoming_packet) + 4;
 
        /* get padlen */
        cp = buffer_ptr(&incoming_packet) + 4;
@@ -1063,6 +1063,12 @@ packet_get_raw(int *length_ptr)
        return buffer_ptr(&incoming_packet);
 }
 
        return buffer_ptr(&incoming_packet);
 }
 
+int
+packet_remaining(void)
+{
+       return buffer_len(&incoming_packet);
+}
+
 /*
  * Returns a string from the packet data.  The string is allocated using
  * xmalloc; it is the responsibility of the calling program to free it when
 /*
  * Returns a string from the packet data.  The string is allocated using
  * xmalloc; it is the responsibility of the calling program to free it when
index ee2b6bc34a791745c58641f7e29c5cbedbc7e590..19d962745a43206341fd8bb68633db931aac155e 100644 (file)
--- a/packet.h
+++ b/packet.h
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * packet.h
  * packet.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Sat Mar 18 02:02:14 1995 ylo
  * Created: Sat Mar 18 02:02:14 1995 ylo
- * 
+ *
  * Interface for the packet protocol functions.
  * Interface for the packet protocol functions.
- * 
+ *
  */
 
 /* RCSID("$Id$"); */
  */
 
 /* RCSID("$Id$"); */
@@ -52,7 +52,7 @@ void    packet_close(void);
  * key is used for both sending and reception.  However, both directions are
  * encrypted independently of each other.  Cipher types are defined in ssh.h.
  */
  * key is used for both sending and reception.  However, both directions are
  * encrypted independently of each other.  Cipher types are defined in ssh.h.
  */
-void 
+void
 packet_set_encryption_key(const unsigned char *key, unsigned int keylen,
     int cipher_type);
 
 packet_set_encryption_key(const unsigned char *key, unsigned int keylen,
     int cipher_type);
 
@@ -201,6 +201,16 @@ do { \
   } \
 } while (0)
 
   } \
 } while (0)
 
+#define packet_done() \
+do { \
+       int _len = packet_remaining(); \
+       if (_len > 0) { \
+               log("Packet integrity error (%d bytes remaining) at %s:%d", \
+                   _len ,__FILE__, __LINE__); \
+               packet_disconnect("Packet integrity error."); \
+       } \
+} while (0)
+
 /* remote host is connected via a socket/ipv4 */
 int    packet_connection_is_on_socket(void);
 int    packet_connection_is_ipv4(void);
 /* remote host is connected via a socket/ipv4 */
 int    packet_connection_is_on_socket(void);
 int    packet_connection_is_ipv4(void);
@@ -208,4 +218,7 @@ int packet_connection_is_ipv4(void);
 /* enable SSH2 packet format */
 void   packet_set_ssh2_format(void);
 
 /* enable SSH2 packet format */
 void   packet_set_ssh2_format(void);
 
+/* returns remaining payload bytes */
+int    packet_remaining(void);
+
 #endif                         /* PACKET_H */
 #endif                         /* PACKET_H */
diff --git a/pty.c b/pty.c
index 55dd13eb38e1db2583a79c2d0b3ce45d3a569ede..bffac4e539cd8f9bbb216e36763e58931afc9341 100644 (file)
--- a/pty.c
+++ b/pty.c
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * pty.c
  * pty.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Fri Mar 17 04:37:25 1995 ylo
  * Created: Fri Mar 17 04:37:25 1995 ylo
- * 
+ *
  * Allocating a pseudo-terminal, and making it the controlling tty.
  * Allocating a pseudo-terminal, and making it the controlling tty.
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
@@ -46,7 +46,7 @@ RCSID("$Id$");
  * returned (the buffer must be able to hold at least 64 characters).
  */
 
  * returned (the buffer must be able to hold at least 64 characters).
  */
 
-int 
+int
 pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen)
 {
 #if defined(HAVE_OPENPTY) || defined(BSD4_4)
 pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen)
 {
 #if defined(HAVE_OPENPTY) || defined(BSD4_4)
@@ -186,7 +186,7 @@ pty_allocate(int *ptyfd, int *ttyfd, char *namebuf, int namebuflen)
 
 /* Releases the tty.  Its ownership is returned to root, and permissions to 0666. */
 
 
 /* Releases the tty.  Its ownership is returned to root, and permissions to 0666. */
 
-void 
+void
 pty_release(const char *ttyname)
 {
        if (chown(ttyname, (uid_t) 0, (gid_t) 0) < 0)
 pty_release(const char *ttyname)
 {
        if (chown(ttyname, (uid_t) 0, (gid_t) 0) < 0)
@@ -197,7 +197,7 @@ pty_release(const char *ttyname)
 
 /* Makes the tty the processes controlling tty and sets it to sane modes. */
 
 
 /* Makes the tty the processes controlling tty and sets it to sane modes. */
 
-void 
+void
 pty_make_controlling_tty(int *ttyfd, const char *ttyname)
 {
        int fd;
 pty_make_controlling_tty(int *ttyfd, const char *ttyname)
 {
        int fd;
@@ -250,7 +250,7 @@ pty_make_controlling_tty(int *ttyfd, const char *ttyname)
 
 /* Changes the window size associated with the pty. */
 
 
 /* Changes the window size associated with the pty. */
 
-void 
+void
 pty_change_window_size(int ptyfd, int row, int col,
                       int xpixel, int ypixel)
 {
 pty_change_window_size(int ptyfd, int row, int col,
                       int xpixel, int ypixel)
 {
diff --git a/pty.h b/pty.h
index c65f8c9302667fd71d5ae166a4cd75c4c237e0b5..59befb900178286ac25cfc29c50504bd1692f011 100644 (file)
--- a/pty.h
+++ b/pty.h
@@ -1,14 +1,14 @@
 /*
 /*
- * 
+ *
  * pty.h
  * pty.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Fri Mar 17 05:03:28 1995 ylo
  * Created: Fri Mar 17 05:03:28 1995 ylo
- * 
+ *
  * Functions for allocating a pseudo-terminal and making it the controlling
  * tty.
  */
  * Functions for allocating a pseudo-terminal and making it the controlling
  * tty.
  */
@@ -39,7 +39,7 @@ void    pty_release(const char *ttyname);
 void    pty_make_controlling_tty(int *ttyfd, const char *ttyname);
 
 /* Changes the window size associated with the pty. */
 void    pty_make_controlling_tty(int *ttyfd, const char *ttyname);
 
 /* Changes the window size associated with the pty. */
-void 
+void
 pty_change_window_size(int ptyfd, int row, int col,
     int xpixel, int ypixel);
 
 pty_change_window_size(int ptyfd, int row, int col,
     int xpixel, int ypixel);
 
diff --git a/radix.c b/radix.c
index ea7f5ba2bcac16714d88a5085b8e2c12e8b36228..84e390fd1d61bf4fac9de79d3e29b200b5a0878b 100644 (file)
--- a/radix.c
+++ b/radix.c
@@ -1,10 +1,10 @@
 /*
  *   radix.c
 /*
  *   radix.c
- * 
+ *
  *   base-64 encoding pinched from lynx2-7-2, who pinched it from rpem.
  *   Originally written by Mark Riordan 12 August 1990 and 17 Feb 1991
  *   and placed in the public domain.
  *   base-64 encoding pinched from lynx2-7-2, who pinched it from rpem.
  *   Originally written by Mark Riordan 12 August 1990 and 17 Feb 1991
  *   and placed in the public domain.
- * 
+ *
  *   Dug Song <dugsong@UMICH.EDU>
  */
 
  *   Dug Song <dugsong@UMICH.EDU>
  */
 
@@ -23,7 +23,7 @@ char six2pr[64] = {
 
 unsigned char pr2six[256];
 
 
 unsigned char pr2six[256];
 
-int 
+int
 uuencode(unsigned char *bufin, unsigned int nbytes, char *bufcoded)
 {
        /* ENC is the basic 1 character encoding function to make a char printing */
 uuencode(unsigned char *bufin, unsigned int nbytes, char *bufcoded)
 {
        /* ENC is the basic 1 character encoding function to make a char printing */
@@ -49,7 +49,7 @@ uuencode(unsigned char *bufin, unsigned int nbytes, char *bufcoded)
        return (outptr - bufcoded);
 }
 
        return (outptr - bufcoded);
 }
 
-int 
+int
 uudecode(const char *bufcoded, unsigned char *bufplain, int outbufsize)
 {
        /* single character decode */
 uudecode(const char *bufcoded, unsigned char *bufplain, int outbufsize)
 {
        /* single character decode */
@@ -162,7 +162,7 @@ typedef unsigned short my_u_short;
 }
 
 
 }
 
 
-int 
+int
 creds_to_radix(CREDENTIALS *creds, unsigned char *buf)
 {
        char *p, *s;
 creds_to_radix(CREDENTIALS *creds, unsigned char *buf)
 {
        char *p, *s;
@@ -216,7 +216,7 @@ creds_to_radix(CREDENTIALS *creds, unsigned char *buf)
        return (uuencode((unsigned char *)temp, len, (char *)buf));
 }
 
        return (uuencode((unsigned char *)temp, len, (char *)buf));
 }
 
-int 
+int
 radix_to_creds(const char *buf, CREDENTIALS *creds)
 {
 
 radix_to_creds(const char *buf, CREDENTIALS *creds)
 {
 
index b23e9269e0ab8fa424926f294628869ce290a193..1e3476b8e86cd5d87c6807408f5f00e6e828a99a 100644 (file)
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * readconf.c
  * readconf.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Sat Apr 22 00:03:10 1995 ylo
  * Created: Sat Apr 22 00:03:10 1995 ylo
- * 
+ *
  * Functions for reading the configuration files.
  * Functions for reading the configuration files.
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
@@ -167,7 +167,7 @@ static struct {
  * error.
  */
 
  * error.
  */
 
-void 
+void
 add_local_forward(Options *options, u_short port, const char *host,
                  u_short host_port)
 {
 add_local_forward(Options *options, u_short port, const char *host,
                  u_short host_port)
 {
@@ -188,7 +188,7 @@ add_local_forward(Options *options, u_short port, const char *host,
  * an error.
  */
 
  * an error.
  */
 
-void 
+void
 add_remote_forward(Options *options, u_short port, const char *host,
                   u_short host_port)
 {
 add_remote_forward(Options *options, u_short port, const char *host,
                   u_short host_port)
 {
@@ -207,7 +207,7 @@ add_remote_forward(Options *options, u_short port, const char *host,
  * returns if the token is not known.
  */
 
  * returns if the token is not known.
  */
 
-static OpCodes 
+static OpCodes
 parse_token(const char *cp, const char *filename, int linenum)
 {
        unsigned int i;
 parse_token(const char *cp, const char *filename, int linenum)
 {
        unsigned int i;
@@ -567,7 +567,7 @@ parse_int:
  * there is an error.  If the file does not exist, this returns immediately.
  */
 
  * there is an error.  If the file does not exist, this returns immediately.
  */
 
-void 
+void
 read_config_file(const char *filename, const char *host, Options *options)
 {
        FILE *f;
 read_config_file(const char *filename, const char *host, Options *options)
 {
        FILE *f;
@@ -607,7 +607,7 @@ read_config_file(const char *filename, const char *host, Options *options)
  * system config file.  Last, fill_default_options is called.
  */
 
  * system config file.  Last, fill_default_options is called.
  */
 
-void 
+void
 initialize_options(Options * options)
 {
        memset(options, 'X', sizeof(*options));
 initialize_options(Options * options)
 {
        memset(options, 'X', sizeof(*options));
@@ -658,7 +658,7 @@ initialize_options(Options * options)
  * options for which no value has been specified with their default values.
  */
 
  * options for which no value has been specified with their default values.
  */
 
-void 
+void
 fill_default_options(Options * options)
 {
        if (options->forward_agent == -1)
 fill_default_options(Options * options)
 {
        if (options->forward_agent == -1)
index fc77419719f44482fd0d0cd58d8d7f87ecdacba1..d65edab048595e9409295ddf9ea2a9d037108201 100644 (file)
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * readconf.h
  * readconf.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Sat Apr 22 00:25:29 1995 ylo
  * Created: Sat Apr 22 00:25:29 1995 ylo
- * 
+ *
  * Functions for reading the configuration file.
  * Functions for reading the configuration file.
- * 
+ *
  */
 
 /* RCSID("$Id$"); */
  */
 
 /* RCSID("$Id$"); */
@@ -106,7 +106,7 @@ void    fill_default_options(Options * options);
  * only sets those values that have not already been set. Returns 0 for legal
  * options
  */
  * only sets those values that have not already been set. Returns 0 for legal
  * options
  */
-int 
+int
 process_config_line(Options * options, const char *host,
     char *line, const char *filename, int linenum,
     int *activep);
 process_config_line(Options * options, const char *host,
     char *line, const char *filename, int linenum,
     int *activep);
@@ -116,7 +116,7 @@ process_config_line(Options * options, const char *host,
  * should already be initialized before this call.  This never returns if
  * there is an error.  If the file does not exist, this returns immediately.
  */
  * should already be initialized before this call.  This never returns if
  * there is an error.  If the file does not exist, this returns immediately.
  */
-void 
+void
 read_config_file(const char *filename, const char *host,
     Options * options);
 
 read_config_file(const char *filename, const char *host,
     Options * options);
 
@@ -124,7 +124,7 @@ read_config_file(const char *filename, const char *host,
  * Adds a local TCP/IP port forward to options.  Never returns if there is an
  * error.
  */
  * Adds a local TCP/IP port forward to options.  Never returns if there is an
  * error.
  */
-void 
+void
 add_local_forward(Options * options, u_short port, const char *host,
     u_short host_port);
 
 add_local_forward(Options * options, u_short port, const char *host,
     u_short host_port);
 
@@ -132,7 +132,7 @@ add_local_forward(Options * options, u_short port, const char *host,
  * Adds a remote TCP/IP port forward to options.  Never returns if there is
  * an error.
  */
  * Adds a remote TCP/IP port forward to options.  Never returns if there is
  * an error.
  */
-void 
+void
 add_remote_forward(Options * options, u_short port, const char *host,
     u_short host_port);
 
 add_remote_forward(Options * options, u_short port, const char *host,
     u_short host_port);
 
index c8258aaa133d99e8c6dee834ddbaf863f735817d..3bfec82cc1b8c02ef50d8dfcd33d78af81dafc10 100644 (file)
@@ -58,7 +58,7 @@ read_passphrase(const char *prompt, int from_stdin)
        sigset_t oset, nset;
        struct sigaction sa, osa;
        int input, output, echo = 0;
        sigset_t oset, nset;
        struct sigaction sa, osa;
        int input, output, echo = 0;
-  
+
        if (from_stdin) {
                input = STDIN_FILENO;
                output = STDERR_FILENO;
        if (from_stdin) {
                input = STDIN_FILENO;
                output = STDERR_FILENO;
diff --git a/rsa.c b/rsa.c
index 67ad99077952e7211a5f1e5a6ad4c9793e4a8032..1a509de30427cabc83437b8f4c146e4f98332be4 100644 (file)
--- a/rsa.c
+++ b/rsa.c
@@ -1,37 +1,37 @@
 /*
 /*
- * 
+ *
  * rsa.c
  * rsa.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Fri Mar  3 22:07:06 1995 ylo
  * Created: Fri Mar  3 22:07:06 1995 ylo
- * 
+ *
  * Description of the RSA algorithm can be found e.g. from the following sources:
  * Description of the RSA algorithm can be found e.g. from the following sources:
- * 
+ *
  *   Bruce Schneier: Applied Cryptography.  John Wiley & Sons, 1994.
  *   Bruce Schneier: Applied Cryptography.  John Wiley & Sons, 1994.
- * 
+ *
  *   Jennifer Seberry and Josed Pieprzyk: Cryptography: An Introduction to
  *   Computer Security.  Prentice-Hall, 1989.
  *   Jennifer Seberry and Josed Pieprzyk: Cryptography: An Introduction to
  *   Computer Security.  Prentice-Hall, 1989.
- * 
+ *
  *   Man Young Rhee: Cryptography and Secure Data Communications.  McGraw-Hill,
  *   1994.
  *   Man Young Rhee: Cryptography and Secure Data Communications.  McGraw-Hill,
  *   1994.
- * 
+ *
  *   R. Rivest, A. Shamir, and L. M. Adleman: Cryptographic Communications
  *   System and Method.  US Patent 4,405,829, 1983.
  *   R. Rivest, A. Shamir, and L. M. Adleman: Cryptographic Communications
  *   System and Method.  US Patent 4,405,829, 1983.
- * 
+ *
  *   Hans Riesel: Prime Numbers and Computer Methods for Factorization.
  *   Birkhauser, 1994.
  *   Hans Riesel: Prime Numbers and Computer Methods for Factorization.
  *   Birkhauser, 1994.
- * 
+ *
  *   The RSA Frequently Asked Questions document by RSA Data Security, Inc., 1995.
  *   The RSA Frequently Asked Questions document by RSA Data Security, Inc., 1995.
- * 
+ *
  *   RSA in 3 lines of perl by Adam Back <aba@atlax.ex.ac.uk>, 1995, as included
  *   below:
  *   RSA in 3 lines of perl by Adam Back <aba@atlax.ex.ac.uk>, 1995, as included
  *   below:
- * 
+ *
  *     [gone - had to be deleted - what a pity]
  *     [gone - had to be deleted - what a pity]
- * 
+ *
 */
 
 #include "includes.h"
 */
 
 #include "includes.h"
diff --git a/rsa.h b/rsa.h
index 2ec5e2eba5dfb303700c9ed1ace1b4841bcf3326..252a910c22ba0ed33d38f9c3225f307907e6673b 100644 (file)
--- a/rsa.h
+++ b/rsa.h
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * rsa.h
  * rsa.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Fri Mar  3 22:01:06 1995 ylo
  * Created: Fri Mar  3 22:01:06 1995 ylo
- * 
+ *
  * RSA key generation, encryption and decryption.
  * RSA key generation, encryption and decryption.
- * 
+ *
 */
 
 /* RCSID("$Id$"); */
 */
 
 /* RCSID("$Id$"); */
diff --git a/scp.c b/scp.c
index da2f62f9812b0da5f4ef9b49fe7b66c34c241746..8c86e0282c5dd31e99521cf4ebb2bd7485f8c7c3 100644 (file)
--- a/scp.c
+++ b/scp.c
@@ -1,13 +1,13 @@
 /*
 /*
- * 
+ *
  * scp - secure remote copy.  This is basically patched BSD rcp which uses ssh
  * to do the data transfer (instead of using rcmd).
  * scp - secure remote copy.  This is basically patched BSD rcp which uses ssh
  * to do the data transfer (instead of using rcmd).
- * 
+ *
  * NOTE: This version should NOT be suid root.  (This uses ssh to do the transfer
  * and ssh has the necessary privileges.)
  * NOTE: This version should NOT be suid root.  (This uses ssh to do the transfer
  * and ssh has the necessary privileges.)
- * 
+ *
  * 1995 Timo Rinne <tri@iki.fi>, Tatu Ylonen <ylo@cs.hut.fi>
  * 1995 Timo Rinne <tri@iki.fi>, Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
 */
 
 /*
 */
 
 /*
@@ -109,7 +109,7 @@ char *port = NULL;
  * assigns the input and output file descriptors on success.
  */
 
  * assigns the input and output file descriptors on success.
  */
 
-int 
+int
 do_cmd(char *host, char *remuser, char *cmd, int *fdin, int *fdout)
 {
        int pin[2], pout[2], reserved[2];
 do_cmd(char *host, char *remuser, char *cmd, int *fdin, int *fdout)
 {
        int pin[2], pout[2], reserved[2];
@@ -194,7 +194,7 @@ do_cmd(char *host, char *remuser, char *cmd, int *fdin, int *fdout)
        return 0;
 }
 
        return 0;
 }
 
-void 
+void
 fatal(const char *fmt,...)
 {
        va_list ap;
 fatal(const char *fmt,...)
 {
        va_list ap;
@@ -257,10 +257,10 @@ main(argc, argv)
                switch (ch) {
                /* User-visible flags. */
                case '4':
                switch (ch) {
                /* User-visible flags. */
                case '4':
-                       IPv4 = 1;
+                       IPv4 = 1;
                        break;
                case '6':
                        break;
                case '6':
-                       IPv6 = 1;
+                       IPv6 = 1;
                        break;
                case 'p':
                        pflag = 1;
                        break;
                case 'p':
                        pflag = 1;
index 6c5b4e74b1060ab1661c2c0d55eaef597867dbeb..5cf6416ca2b25886dd94496ad523f5b68d763e53 100644 (file)
@@ -1,14 +1,14 @@
 /*
 /*
- * 
+ *
  * servconf.c
  * servconf.c
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Mon Aug 21 15:48:58 1995 ylo
  * Created: Mon Aug 21 15:48:58 1995 ylo
- * 
+ *
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
@@ -24,7 +24,7 @@ void add_listen_addr(ServerOptions *options, char *addr);
 
 /* Initializes the server options to their default values. */
 
 
 /* Initializes the server options to their default values. */
 
-void 
+void
 initialize_server_options(ServerOptions *options)
 {
        memset(options, 0, sizeof(*options));
 initialize_server_options(ServerOptions *options)
 {
        memset(options, 0, sizeof(*options));
@@ -73,7 +73,7 @@ initialize_server_options(ServerOptions *options)
        options->protocol = SSH_PROTO_UNKNOWN;
 }
 
        options->protocol = SSH_PROTO_UNKNOWN;
 }
 
-void 
+void
 fill_default_server_options(ServerOptions *options)
 {
        if (options->num_ports == 0)
 fill_default_server_options(ServerOptions *options)
 {
        if (options->num_ports == 0)
@@ -226,7 +226,7 @@ static struct {
  * returns if the token is not known.
  */
 
  * returns if the token is not known.
  */
 
-static ServerOpCodes 
+static ServerOpCodes
 parse_token(const char *cp, const char *filename,
            int linenum)
 {
 parse_token(const char *cp, const char *filename,
            int linenum)
 {
@@ -244,7 +244,7 @@ parse_token(const char *cp, const char *filename,
 /*
  * add listen address
  */
 /*
  * add listen address
  */
-void 
+void
 add_listen_addr(ServerOptions *options, char *addr)
 {
        extern int IPv4or6;
 add_listen_addr(ServerOptions *options, char *addr)
 {
        extern int IPv4or6;
@@ -274,7 +274,7 @@ add_listen_addr(ServerOptions *options, char *addr)
 
 /* Reads the server configuration file. */
 
 
 /* Reads the server configuration file. */
 
-void 
+void
 read_server_config(ServerOptions *options, const char *filename)
 {
        FILE *f;
 read_server_config(ServerOptions *options, const char *filename)
 {
        FILE *f;
@@ -310,7 +310,7 @@ read_server_config(ServerOptions *options, const char *filename)
                                    "ListenAdress.\n", filename, linenum);
                        if (options->num_ports >= MAX_PORTS)
                                fatal("%s line %d: too many ports.\n",
                                    "ListenAdress.\n", filename, linenum);
                        if (options->num_ports >= MAX_PORTS)
                                fatal("%s line %d: too many ports.\n",
-                                   filename, linenum);
+                                   filename, linenum);
                        cp = strtok(NULL, WHITESPACE);
                        if (!cp)
                                fatal("%s line %d: missing port number.\n",
                        cp = strtok(NULL, WHITESPACE);
                        if (!cp)
                                fatal("%s line %d: missing port number.\n",
index 792868c2cafad265178713a75412aec9b66c6c1e..8ba3c26d0ae4f97bfca52a7a580e58fcdea2e917 100644 (file)
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * servconf.h
  * servconf.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Mon Aug 21 15:35:03 1995 ylo
  * Created: Mon Aug 21 15:35:03 1995 ylo
- * 
+ *
  * Definitions for server configuration data and for the functions reading it.
  * Definitions for server configuration data and for the functions reading it.
- * 
+ *
  */
 
 /* RCSID("$Id$"); */
  */
 
 /* RCSID("$Id$"); */
index 0ea57faa0f0dd4146acdc5302bd9a3bcca8dc408..a7abbe4048357fa210da5f2862843b21c0c47ede 100644 (file)
@@ -59,7 +59,7 @@ static volatile int child_wait_status;        /* Status from wait(). */
 
 void   server_init_dispatch(void);
 
 
 void   server_init_dispatch(void);
 
-void 
+void
 sigchld_handler(int sig)
 {
        int save_errno = errno;
 sigchld_handler(int sig)
 {
        int save_errno = errno;
@@ -78,7 +78,7 @@ sigchld_handler(int sig)
        signal(SIGCHLD, sigchld_handler);
        errno = save_errno;
 }
        signal(SIGCHLD, sigchld_handler);
        errno = save_errno;
 }
-void 
+void
 sigchld_handler2(int sig)
 {
        int save_errno = errno;
 sigchld_handler2(int sig)
 {
        int save_errno = errno;
@@ -92,7 +92,7 @@ sigchld_handler2(int sig)
  * Make packets from buffered stderr data, and buffer it for sending
  * to the client.
  */
  * Make packets from buffered stderr data, and buffer it for sending
  * to the client.
  */
-void 
+void
 make_packets_from_stderr_data()
 {
        int len;
 make_packets_from_stderr_data()
 {
        int len;
@@ -121,7 +121,7 @@ make_packets_from_stderr_data()
  * Make packets from buffered stdout data, and buffer it for sending to the
  * client.
  */
  * Make packets from buffered stdout data, and buffer it for sending to the
  * client.
  */
-void 
+void
 make_packets_from_stdout_data()
 {
        int len;
 make_packets_from_stdout_data()
 {
        int len;
@@ -152,7 +152,7 @@ make_packets_from_stdout_data()
  * have data or can accept data.  Optionally, a maximum time can be specified
  * for the duration of the wait (0 = infinite).
  */
  * have data or can accept data.  Optionally, a maximum time can be specified
  * for the duration of the wait (0 = infinite).
  */
-void 
+void
 wait_until_can_do_something(fd_set * readset, fd_set * writeset,
                            unsigned int max_time_milliseconds)
 {
 wait_until_can_do_something(fd_set * readset, fd_set * writeset,
                            unsigned int max_time_milliseconds)
 {
@@ -246,7 +246,7 @@ retry_select:
  * Processes input from the client and the program.  Input data is stored
  * in buffers and processed later.
  */
  * Processes input from the client and the program.  Input data is stored
  * in buffers and processed later.
  */
-void 
+void
 process_input(fd_set * readset)
 {
        int len;
 process_input(fd_set * readset)
 {
        int len;
@@ -299,7 +299,7 @@ process_input(fd_set * readset)
 /*
  * Sends data from internal buffers to client program stdin.
  */
 /*
  * Sends data from internal buffers to client program stdin.
  */
-void 
+void
 process_output(fd_set * writeset)
 {
        int len;
 process_output(fd_set * writeset)
 {
        int len;
@@ -334,7 +334,7 @@ process_output(fd_set * writeset)
  * Wait until all buffered output has been sent to the client.
  * This is used when the program terminates.
  */
  * Wait until all buffered output has been sent to the client.
  * This is used when the program terminates.
  */
-void 
+void
 drain_output()
 {
        /* Send any buffered stdout data to the client. */
 drain_output()
 {
        /* Send any buffered stdout data to the client. */
@@ -359,7 +359,7 @@ drain_output()
        packet_write_wait();
 }
 
        packet_write_wait();
 }
 
-void 
+void
 process_buffered_input_packets()
 {
        dispatch_run(DISPATCH_NONBLOCK, NULL);
 process_buffered_input_packets()
 {
        dispatch_run(DISPATCH_NONBLOCK, NULL);
@@ -372,7 +372,7 @@ process_buffered_input_packets()
  * stdin (of the child program), and reads from stdout and stderr (of the
  * child program).
  */
  * stdin (of the child program), and reads from stdout and stderr (of the
  * child program).
  */
-void 
+void
 server_loop(int pid, int fdin_arg, int fdout_arg, int fderr_arg)
 {
        int wait_status, wait_pid;      /* Status and pid returned by wait(). */
 server_loop(int pid, int fdin_arg, int fdout_arg, int fderr_arg)
 {
        int wait_status, wait_pid;      /* Status and pid returned by wait(). */
@@ -604,7 +604,7 @@ server_loop(int pid, int fdin_arg, int fdout_arg, int fderr_arg)
        /* NOTREACHED */
 }
 
        /* NOTREACHED */
 }
 
-void 
+void
 server_loop2(void)
 {
        fd_set readset, writeset;
 server_loop2(void)
 {
        fd_set readset, writeset;
@@ -697,16 +697,17 @@ int
 input_direct_tcpip(void)
 {
        int sock;
 input_direct_tcpip(void)
 {
        int sock;
-       char *host, *originator;
-       int host_port, originator_port;
+       char *target, *originator;
+       int target_port, originator_port;
 
 
-       host = packet_get_string(NULL);
-       host_port = packet_get_int();
+       target = packet_get_string(NULL);
+       target_port = packet_get_int();
        originator = packet_get_string(NULL);
        originator_port = packet_get_int();
        originator = packet_get_string(NULL);
        originator_port = packet_get_int();
+       packet_done();
        /* XXX check permission */
        /* XXX check permission */
-       sock = channel_connect_to(host, host_port);
-       xfree(host);
+       sock = channel_connect_to(target, target_port);
+       xfree(target);
        xfree(originator);
        if (sock < 0)
                return -1;
        xfree(originator);
        if (sock < 0)
                return -1;
@@ -714,7 +715,7 @@ input_direct_tcpip(void)
            sock, sock, -1, 4*1024, 32*1024, 0, xstrdup("direct-tcpip"));
 }
 
            sock, sock, -1, 4*1024, 32*1024, 0, xstrdup("direct-tcpip"));
 }
 
-void 
+void
 server_input_channel_open(int type, int plen)
 {
        Channel *c = NULL;
 server_input_channel_open(int type, int plen)
 {
        Channel *c = NULL;
@@ -735,6 +736,7 @@ server_input_channel_open(int type, int plen)
 
        if (strcmp(ctype, "session") == 0) {
                debug("open session");
 
        if (strcmp(ctype, "session") == 0) {
                debug("open session");
+               packet_done();
                /*
                 * A server session has no fd to read or write
                 * until a CHANNEL_REQUEST for a shell is made,
                /*
                 * A server session has no fd to read or write
                 * until a CHANNEL_REQUEST for a shell is made,
@@ -783,7 +785,7 @@ server_input_channel_open(int type, int plen)
        xfree(ctype);
 }
 
        xfree(ctype);
 }
 
-void 
+void
 server_init_dispatch_20()
 {
        debug("server_init_dispatch_20");
 server_init_dispatch_20()
 {
        debug("server_init_dispatch_20");
@@ -798,7 +800,7 @@ server_init_dispatch_20()
        dispatch_set(SSH2_MSG_CHANNEL_REQUEST, &channel_input_channel_request);
        dispatch_set(SSH2_MSG_CHANNEL_WINDOW_ADJUST, &channel_input_window_adjust);
 }
        dispatch_set(SSH2_MSG_CHANNEL_REQUEST, &channel_input_channel_request);
        dispatch_set(SSH2_MSG_CHANNEL_WINDOW_ADJUST, &channel_input_window_adjust);
 }
-void 
+void
 server_init_dispatch_13()
 {
        debug("server_init_dispatch_13");
 server_init_dispatch_13()
 {
        debug("server_init_dispatch_13");
@@ -813,7 +815,7 @@ server_init_dispatch_13()
        dispatch_set(SSH_MSG_CHANNEL_OPEN_FAILURE, &channel_input_open_failure);
        dispatch_set(SSH_MSG_PORT_OPEN, &channel_input_port_open);
 }
        dispatch_set(SSH_MSG_CHANNEL_OPEN_FAILURE, &channel_input_open_failure);
        dispatch_set(SSH_MSG_PORT_OPEN, &channel_input_port_open);
 }
-void 
+void
 server_init_dispatch_15()
 {
        server_init_dispatch_13();
 server_init_dispatch_15()
 {
        server_init_dispatch_13();
@@ -821,7 +823,7 @@ server_init_dispatch_15()
        dispatch_set(SSH_MSG_CHANNEL_CLOSE, &channel_input_ieof);
        dispatch_set(SSH_MSG_CHANNEL_CLOSE_CONFIRMATION, &channel_input_oclose);
 }
        dispatch_set(SSH_MSG_CHANNEL_CLOSE, &channel_input_ieof);
        dispatch_set(SSH_MSG_CHANNEL_CLOSE_CONFIRMATION, &channel_input_oclose);
 }
-void 
+void
 server_init_dispatch()
 {
        if (compat20)
 server_init_dispatch()
 {
        if (compat20)
index 835a469458524c07b878da4439a2a1e74449cb4b..8d8ff223ec7d0861641ccc614bafa8565ce656ec 100644 (file)
--- a/session.c
+++ b/session.c
@@ -8,7 +8,7 @@
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: session.c,v 1.2 2000/04/06 08:55:22 markus Exp $");
+RCSID("$OpenBSD: session.c,v 1.4 2000/04/14 10:30:33 markus Exp $");
 
 #include "xmalloc.h"
 #include "ssh.h"
 
 #include "xmalloc.h"
 #include "ssh.h"
@@ -113,7 +113,7 @@ xauthfile_cleanup_proc(void *ignore)
  * Function to perform cleanup if we get aborted abnormally (e.g., due to a
  * dropped connection).
  */
  * Function to perform cleanup if we get aborted abnormally (e.g., due to a
  * dropped connection).
  */
-void 
+void
 pty_cleanup_proc(void *session)
 {
        Session *s=session;
 pty_cleanup_proc(void *session)
 {
        Session *s=session;
@@ -136,7 +136,7 @@ pty_cleanup_proc(void *session)
  * terminals are allocated, X11, TCP/IP, and authentication agent forwardings
  * are requested, etc.
  */
  * terminals are allocated, X11, TCP/IP, and authentication agent forwardings
  * are requested, etc.
  */
-void 
+void
 do_authenticated(struct passwd * pw)
 {
        Session *s;
 do_authenticated(struct passwd * pw)
 {
        Session *s;
@@ -366,7 +366,7 @@ do_authenticated(struct passwd * pw)
  * will call do_child from the child, and server_loop from the parent after
  * setting up file descriptors and such.
  */
  * will call do_child from the child, and server_loop from the parent after
  * setting up file descriptors and such.
  */
-void 
+void
 do_exec_no_pty(Session *s, const char *command, struct passwd * pw)
 {
        int pid;
 do_exec_no_pty(Session *s, const char *command, struct passwd * pw)
 {
        int pid;
@@ -487,7 +487,7 @@ do_exec_no_pty(Session *s, const char *command, struct passwd * pw)
  * setting up file descriptors, controlling tty, updating wtmp, utmp,
  * lastlog, and other such operations.
  */
  * setting up file descriptors, controlling tty, updating wtmp, utmp,
  * lastlog, and other such operations.
  */
-void 
+void
 do_exec_pty(Session *s, const char *command, struct passwd * pw)
 {
        FILE *f;
 do_exec_pty(Session *s, const char *command, struct passwd * pw)
 {
        FILE *f;
@@ -660,7 +660,7 @@ do_exec_pty(Session *s, const char *command, struct passwd * pw)
  * Sets the value of the given variable in the environment.  If the variable
  * already exists, its value is overriden.
  */
  * Sets the value of the given variable in the environment.  If the variable
  * already exists, its value is overriden.
  */
-void 
+void
 child_set_env(char ***envp, unsigned int *envsizep, const char *name,
              const char *value)
 {
 child_set_env(char ***envp, unsigned int *envsizep, const char *name,
              const char *value)
 {
@@ -701,7 +701,7 @@ child_set_env(char ***envp, unsigned int *envsizep, const char *name,
  * Otherwise, it must consist of empty lines, comments (line starts with '#')
  * and assignments of the form name=value.  No other forms are allowed.
  */
  * Otherwise, it must consist of empty lines, comments (line starts with '#')
  * and assignments of the form name=value.  No other forms are allowed.
  */
-void 
+void
 read_environment_file(char ***env, unsigned int *envsize,
                      const char *filename)
 {
 read_environment_file(char ***env, unsigned int *envsize,
                      const char *filename)
 {
@@ -770,7 +770,7 @@ void do_pam_environment(char ***env, int *envsize)
  * environment, closing extra file descriptors, setting the user and group
  * ids, and executing the command or shell.
  */
  * environment, closing extra file descriptors, setting the user and group
  * ids, and executing the command or shell.
  */
-void 
+void
 do_child(const char *command, struct passwd * pw, const char *term,
         const char *display, const char *auth_proto,
         const char *auth_data, const char *ttyname)
 do_child(const char *command, struct passwd * pw, const char *term,
         const char *display, const char *auth_proto,
         const char *auth_data, const char *ttyname)
@@ -1202,6 +1202,7 @@ session_window_change_req(Session *s)
        s->row = packet_get_int();
        s->xpixel = packet_get_int();
        s->ypixel = packet_get_int();
        s->row = packet_get_int();
        s->xpixel = packet_get_int();
        s->ypixel = packet_get_int();
+       packet_done();
        pty_change_window_size(s->ptyfd, s->row, s->col, s->xpixel, s->ypixel);
        return 1;
 }
        pty_change_window_size(s->ptyfd, s->row, s->col, s->xpixel, s->ypixel);
        return 1;
 }
@@ -1210,14 +1211,17 @@ int
 session_pty_req(Session *s)
 {
        unsigned int len;
 session_pty_req(Session *s)
 {
        unsigned int len;
+       char *term_modes;       /* encoded terminal modes */
 
        if (s->ttyfd != -1)
 
        if (s->ttyfd != -1)
-               return -1;
+               return 0;
        s->term = packet_get_string(&len);
        s->col = packet_get_int();
        s->row = packet_get_int();
        s->xpixel = packet_get_int();
        s->ypixel = packet_get_int();
        s->term = packet_get_string(&len);
        s->col = packet_get_int();
        s->row = packet_get_int();
        s->xpixel = packet_get_int();
        s->ypixel = packet_get_int();
+       term_modes = packet_get_string(&len);
+       packet_done();
 
        if (strcmp(s->term, "") == 0) {
                xfree(s->term);
 
        if (strcmp(s->term, "") == 0) {
                xfree(s->term);
@@ -1230,7 +1234,8 @@ session_pty_req(Session *s)
                s->ptyfd = -1;
                s->ttyfd = -1;
                error("session_pty_req: session %d alloc failed", s->self);
                s->ptyfd = -1;
                s->ttyfd = -1;
                error("session_pty_req: session %d alloc failed", s->self);
-               return -1;
+               xfree(term_modes);
+               return 0;
        }
        debug("session_pty_req: session %d alloc %s", s->self, s->tty);
        /*
        }
        debug("session_pty_req: session %d alloc %s", s->self, s->tty);
        /*
index ecb44a229d9d9bfdb33d6647d1780b5dd4a3056c..66439461ea253554f2503236b2b5dbf948c6e888 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ssh-agent.c,v 1.27 2000/04/12 09:39:10 markus Exp $   */
+/*     $OpenBSD: ssh-agent.c,v 1.28 2000/04/14 10:30:33 markus Exp $   */
 
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
 
 /*
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
@@ -9,7 +9,7 @@
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: ssh-agent.c,v 1.27 2000/04/12 09:39:10 markus Exp $");
+RCSID("$OpenBSD: ssh-agent.c,v 1.28 2000/04/14 10:30:33 markus Exp $");
 
 #include "ssh.h"
 #include "rsa.h"
 
 #include "ssh.h"
 #include "rsa.h"
@@ -412,7 +412,7 @@ prepare_select(fd_set *readset, fd_set *writeset)
                }
 }
 
                }
 }
 
-void 
+void
 after_select(fd_set *readset, fd_set *writeset)
 {
        unsigned int i;
 after_select(fd_set *readset, fd_set *writeset)
 {
        unsigned int i;
@@ -646,8 +646,8 @@ main(int ac, char **av)
        }
        signal(SIGINT, SIG_IGN);
        signal(SIGPIPE, SIG_IGN);
        }
        signal(SIGINT, SIG_IGN);
        signal(SIGPIPE, SIG_IGN);
-       signal(SIGHUP, cleanup_exit);                                          
-       signal(SIGTERM, cleanup_exit);                                          
+       signal(SIGHUP, cleanup_exit);
+       signal(SIGTERM, cleanup_exit);
        while (1) {
                FD_ZERO(&readset);
                FD_ZERO(&writeset);
        while (1) {
                FD_ZERO(&readset);
                FD_ZERO(&writeset);
index 83d05d9a35631e3dde71c7f7ace38c6180a57b8c..1b5261d8c6070670db28a49d7e3a1e8d76599d3b 100644 (file)
@@ -508,7 +508,7 @@ passphrase_again:
        if (identity_comment) {
                strlcpy(comment, identity_comment, sizeof(comment));
        } else {
        if (identity_comment) {
                strlcpy(comment, identity_comment, sizeof(comment));
        } else {
-               /* Create default commend field for the passphrase. */
+               /* Create default commend field for the passphrase. */
                if (gethostname(hostname, sizeof(hostname)) < 0) {
                        perror("gethostname");
                        exit(1);
                if (gethostname(hostname, sizeof(hostname)) < 0) {
                        perror("gethostname");
                        exit(1);
diff --git a/ssh.1 b/ssh.1
index afb113f1bc998dade37bf7f203cd6a42e24b6ff8..f63b8be9be7b6678e16d1bc85ce863f08a214a44 100644 (file)
--- a/ssh.1
+++ b/ssh.1
@@ -24,7 +24,7 @@
 .Op Ar command
 .Pp
 .Nm ssh
 .Op Ar command
 .Pp
 .Nm ssh
-.Op Fl afgknqtvxCPX46
+.Op Fl afgknqtvxCPX246
 .Op Fl c Ar blowfish | 3des
 .Op Fl e Ar escape_char
 .Op Fl i Ar identity_file
 .Op Fl c Ar blowfish | 3des
 .Op Fl e Ar escape_char
 .Op Fl i Ar identity_file
@@ -455,6 +455,10 @@ from the local machine.
 Port forwardings can also be specified in the configuration file.
 Privileged ports can be forwarded only when
 logging in as root on the remote machine.
 Port forwardings can also be specified in the configuration file.
 Privileged ports can be forwarded only when
 logging in as root on the remote machine.
+.It Fl 2
+Forces
+.Nm
+to use protocol version 2 only.
 .It Fl 4
 Forces
 .Nm
 .It Fl 4
 Forces
 .Nm
diff --git a/ssh.c b/ssh.c
index a387d66c7d6186312079fc7214b2e2be10aaab58..417332850a60771f4e0b2430c9c942168cfa38c1 100644 (file)
--- a/ssh.c
+++ b/ssh.c
@@ -138,6 +138,7 @@ usage()
        fprintf(stderr, "  -g          Allow remote hosts to connect to forwarded ports.\n");
        fprintf(stderr, "  -4          Use IPv4 only.\n");
        fprintf(stderr, "  -6          Use IPv6 only.\n");
        fprintf(stderr, "  -g          Allow remote hosts to connect to forwarded ports.\n");
        fprintf(stderr, "  -4          Use IPv4 only.\n");
        fprintf(stderr, "  -6          Use IPv6 only.\n");
+       fprintf(stderr, "  -2          Force protocol version 2.\n");
        fprintf(stderr, "  -o 'option' Process the option as if it was read from a configuration file.\n");
        exit(1);
 }
        fprintf(stderr, "  -o 'option' Process the option as if it was read from a configuration file.\n");
        exit(1);
 }
@@ -251,8 +252,8 @@ main(int ac, char **av)
                        if (host)
                                break;
                        if ((cp = strchr(av[optind], '@'))) {
                        if (host)
                                break;
                        if ((cp = strchr(av[optind], '@'))) {
-                               if(cp == av[optind])
-                                       usage();
+                               if(cp == av[optind])
+                                       usage();
                                options.user = av[optind];
                                *cp = '\0';
                                host = ++cp;
                                options.user = av[optind];
                                *cp = '\0';
                                host = ++cp;
@@ -276,39 +277,34 @@ main(int ac, char **av)
                        optarg = NULL;
                }
                switch (opt) {
                        optarg = NULL;
                }
                switch (opt) {
+               case '2':
+                       options.protocol = SSH_PROTO_2;
+                       break;
                case '4':
                        IPv4or6 = AF_INET;
                        break;
                case '4':
                        IPv4or6 = AF_INET;
                        break;
-
                case '6':
                        IPv4or6 = AF_INET6;
                        break;
                case '6':
                        IPv4or6 = AF_INET6;
                        break;
-
                case 'n':
                        stdin_null_flag = 1;
                        break;
                case 'n':
                        stdin_null_flag = 1;
                        break;
-
                case 'f':
                        fork_after_authentication_flag = 1;
                        stdin_null_flag = 1;
                        break;
                case 'f':
                        fork_after_authentication_flag = 1;
                        stdin_null_flag = 1;
                        break;
-
                case 'x':
                        options.forward_x11 = 0;
                        break;
                case 'x':
                        options.forward_x11 = 0;
                        break;
-
                case 'X':
                        options.forward_x11 = 1;
                        break;
                case 'X':
                        options.forward_x11 = 1;
                        break;
-
                case 'g':
                        options.gateway_ports = 1;
                        break;
                case 'g':
                        options.gateway_ports = 1;
                        break;
-
                case 'P':
                        options.use_privileged_port = 0;
                        break;
                case 'P':
                        options.use_privileged_port = 0;
                        break;
-
                case 'a':
                        options.forward_agent = 0;
                        break;
                case 'a':
                        options.forward_agent = 0;
                        break;
@@ -330,11 +326,9 @@ main(int ac, char **av)
                        options.identity_files[options.num_identity_files++] =
                                xstrdup(optarg);
                        break;
                        options.identity_files[options.num_identity_files++] =
                                xstrdup(optarg);
                        break;
-
                case 't':
                        tty_flag = 1;
                        break;
                case 't':
                        tty_flag = 1;
                        break;
-
                case 'v':
                case 'V':
                        fprintf(stderr, "SSH Version %s, protocol versions %d.%d/%d.%d.\n",
                case 'v':
                case 'V':
                        fprintf(stderr, "SSH Version %s, protocol versions %d.%d/%d.%d.\n",
@@ -347,11 +341,9 @@ main(int ac, char **av)
                        debug_flag = 1;
                        options.log_level = SYSLOG_LEVEL_DEBUG;
                        break;
                        debug_flag = 1;
                        options.log_level = SYSLOG_LEVEL_DEBUG;
                        break;
-
                case 'q':
                        options.log_level = SYSLOG_LEVEL_QUIET;
                        break;
                case 'q':
                        options.log_level = SYSLOG_LEVEL_QUIET;
                        break;
-
                case 'e':
                        if (optarg[0] == '^' && optarg[2] == 0 &&
                            (unsigned char) optarg[1] >= 64 && (unsigned char) optarg[1] < 128)
                case 'e':
                        if (optarg[0] == '^' && optarg[2] == 0 &&
                            (unsigned char) optarg[1] >= 64 && (unsigned char) optarg[1] < 128)
@@ -365,7 +357,6 @@ main(int ac, char **av)
                                exit(1);
                        }
                        break;
                                exit(1);
                        }
                        break;
-
                case 'c':
                        options.cipher = cipher_number(optarg);
                        if (options.cipher == -1) {
                case 'c':
                        options.cipher = cipher_number(optarg);
                        if (options.cipher == -1) {
@@ -373,15 +364,12 @@ main(int ac, char **av)
                                exit(1);
                        }
                        break;
                                exit(1);
                        }
                        break;
-
                case 'p':
                        options.port = atoi(optarg);
                        break;
                case 'p':
                        options.port = atoi(optarg);
                        break;
-
                case 'l':
                        options.user = optarg;
                        break;
                case 'l':
                        options.user = optarg;
                        break;
-
                case 'R':
                        if (sscanf(optarg, "%hu/%255[^/]/%hu", &fwd_port, buf,
                            &fwd_host_port) != 3 &&
                case 'R':
                        if (sscanf(optarg, "%hu/%255[^/]/%hu", &fwd_port, buf,
                            &fwd_host_port) != 3 &&
@@ -393,7 +381,6 @@ main(int ac, char **av)
                        }
                        add_remote_forward(&options, fwd_port, buf, fwd_host_port);
                        break;
                        }
                        add_remote_forward(&options, fwd_port, buf, fwd_host_port);
                        break;
-
                case 'L':
                        if (sscanf(optarg, "%hu/%255[^/]/%hu", &fwd_port, buf,
                            &fwd_host_port) != 3 &&
                case 'L':
                        if (sscanf(optarg, "%hu/%255[^/]/%hu", &fwd_port, buf,
                            &fwd_host_port) != 3 &&
@@ -405,27 +392,22 @@ main(int ac, char **av)
                        }
                        add_local_forward(&options, fwd_port, buf, fwd_host_port);
                        break;
                        }
                        add_local_forward(&options, fwd_port, buf, fwd_host_port);
                        break;
-
                case 'C':
                        options.compression = 1;
                        break;
                case 'C':
                        options.compression = 1;
                        break;
-
                case 'N':
                        no_shell_flag = 1;
                        no_tty_flag = 1;
                        break;
                case 'N':
                        no_shell_flag = 1;
                        no_tty_flag = 1;
                        break;
-
                case 'T':
                        no_tty_flag = 1;
                        break;
                case 'T':
                        no_tty_flag = 1;
                        break;
-
                case 'o':
                        dummy = 1;
                        if (process_config_line(&options, host ? host : "", optarg,
                                         "command-line", 0, &dummy) != 0)
                                exit(1);
                        break;
                case 'o':
                        dummy = 1;
                        if (process_config_line(&options, host ? host : "", optarg,
                                         "command-line", 0, &dummy) != 0)
                                exit(1);
                        break;
-
                default:
                        usage();
                }
                default:
                        usage();
                }
@@ -634,7 +616,7 @@ main(int ac, char **av)
 
        /* Expand ~ in known host file names. */
        options.system_hostfile = tilde_expand_filename(options.system_hostfile,
 
        /* Expand ~ in known host file names. */
        options.system_hostfile = tilde_expand_filename(options.system_hostfile,
-                                                       original_real_uid);
+                                                       original_real_uid);
        options.user_hostfile = tilde_expand_filename(options.user_hostfile,
                                                      original_real_uid);
 
        options.user_hostfile = tilde_expand_filename(options.user_hostfile,
                                                      original_real_uid);
 
@@ -803,7 +785,7 @@ ssh_session(void)
                      options.local_forwards[i].host,
                      options.local_forwards[i].host_port);
                channel_request_local_forwarding(options.local_forwards[i].port,
                      options.local_forwards[i].host,
                      options.local_forwards[i].host_port);
                channel_request_local_forwarding(options.local_forwards[i].port,
-                                                options.local_forwards[i].host,
+                                                options.local_forwards[i].host,
                                                 options.local_forwards[i].host_port,
                                                 options.gateway_ports);
        }
                                                 options.local_forwards[i].host_port,
                                                 options.gateway_ports);
        }
@@ -816,11 +798,11 @@ ssh_session(void)
                      options.remote_forwards[i].host_port);
                channel_request_remote_forwarding(options.remote_forwards[i].port,
                                                  options.remote_forwards[i].host,
                      options.remote_forwards[i].host_port);
                channel_request_remote_forwarding(options.remote_forwards[i].port,
                                                  options.remote_forwards[i].host,
-                                                 options.remote_forwards[i].host_port);
+                                                 options.remote_forwards[i].host_port);
        }
 
        /* If requested, let ssh continue in the background. */
        }
 
        /* If requested, let ssh continue in the background. */
-       if (fork_after_authentication_flag) 
+       if (fork_after_authentication_flag)
                if (daemon(1, 1) < 0)
                        fatal("daemon() failed: %.200s", strerror(errno));
 
                if (daemon(1, 1) < 0)
                        fatal("daemon() failed: %.200s", strerror(errno));
 
@@ -859,7 +841,7 @@ init_local_fwd(void)
                      options.local_forwards[i].host,
                      options.local_forwards[i].host_port);
                channel_request_local_forwarding(options.local_forwards[i].port,
                      options.local_forwards[i].host,
                      options.local_forwards[i].host_port);
                channel_request_local_forwarding(options.local_forwards[i].port,
-                                                options.local_forwards[i].host,
+                                                options.local_forwards[i].host,
                                                 options.local_forwards[i].host_port,
                                                 options.gateway_ports);
        }
                                                 options.local_forwards[i].host_port,
                                                 options.gateway_ports);
        }
diff --git a/ssh.h b/ssh.h
index 47299b6239553de4f622fc741e1bee988d79ff0a..9d57e40d41bef9d1fdc25606ea15634c4e0a32ab 100644 (file)
--- a/ssh.h
+++ b/ssh.h
@@ -1,16 +1,16 @@
 /*
 /*
- * 
+ *
  * ssh.h
  * ssh.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Fri Mar 17 17:09:37 1995 ylo
  * Created: Fri Mar 17 17:09:37 1995 ylo
- * 
+ *
  * Generic header file for ssh.
  * Generic header file for ssh.
- * 
+ *
  */
 
 /* RCSID("$Id$"); */
  */
 
 /* RCSID("$Id$"); */
  * information is not available.  This must be called before record_login.
  * The host from which the user logged in is stored in buf.
  */
  * information is not available.  This must be called before record_login.
  * The host from which the user logged in is stored in buf.
  */
-unsigned long 
+unsigned long
 get_last_login_time(uid_t uid, const char *logname,
     char *buf, unsigned int bufsize);
 
 get_last_login_time(uid_t uid, const char *logname,
     char *buf, unsigned int bufsize);
 
@@ -287,7 +287,7 @@ get_last_login_time(uid_t uid, const char *logname,
  * Records that the user has logged in.  This does many things normally done
  * by login(1).
  */
  * Records that the user has logged in.  This does many things normally done
  * by login(1).
  */
-void 
+void
 record_login(int pid, const char *ttyname, const char *user, uid_t uid,
     const char *host, struct sockaddr *addr);
 
 record_login(int pid, const char *ttyname, const char *user, uid_t uid,
     const char *host, struct sockaddr *addr);
 
@@ -308,7 +308,7 @@ void    record_logout(int pid, const char *ttyname);
  * and zero on failure.  If the connection is successful, this calls
  * packet_set_connection for the connection.
  */
  * and zero on failure.  If the connection is successful, this calls
  * packet_set_connection for the connection.
  */
-int 
+int
 ssh_connect(const char *host, struct sockaddr_storage * hostaddr,
     u_short port, int connection_attempts,
     int anonymous, uid_t original_real_uid,
 ssh_connect(const char *host, struct sockaddr_storage * hostaddr,
     u_short port, int connection_attempts,
     int anonymous, uid_t original_real_uid,
@@ -323,7 +323,7 @@ ssh_connect(const char *host, struct sockaddr_storage * hostaddr,
  * references from the packet module).
  */
 
  * references from the packet module).
  */
 
-void 
+void
 ssh_login(int host_key_valid, RSA * host_key, const char *host,
     struct sockaddr * hostaddr, uid_t original_real_uid);
 
 ssh_login(int host_key_valid, RSA * host_key, const char *host,
     struct sockaddr * hostaddr, uid_t original_real_uid);
 
@@ -340,7 +340,7 @@ int     auth_rhosts(struct passwd * pw, const char *client_user);
  * Tries to authenticate the user using the .rhosts file and the host using
  * its host key.  Returns true if authentication succeeds.
  */
  * Tries to authenticate the user using the .rhosts file and the host using
  * its host key.  Returns true if authentication succeeds.
  */
-int 
+int
 auth_rhosts_rsa(struct passwd * pw, const char *client_user, RSA* client_host_key);
 
 /*
 auth_rhosts_rsa(struct passwd * pw, const char *client_user, RSA* client_host_key);
 
 /*
@@ -409,7 +409,7 @@ char   *read_passphrase(const char *prompt, int from_stdin);
  * precede the key to provide identification of the key without needing a
  * passphrase.
  */
  * precede the key to provide identification of the key without needing a
  * passphrase.
  */
-int 
+int
 save_private_key(const char *filename, const char *passphrase,
     RSA * private_key, const char *comment);
 
 save_private_key(const char *filename, const char *passphrase,
     RSA * private_key, const char *comment);
 
@@ -419,7 +419,7 @@ save_private_key(const char *filename, const char *passphrase,
  * comment of the key is returned in comment_return if it is non-NULL; the
  * caller must free the value with xfree.
  */
  * comment of the key is returned in comment_return if it is non-NULL; the
  * caller must free the value with xfree.
  */
-int 
+int
 load_public_key(const char *filename, RSA * pub,
     char **comment_return);
 
 load_public_key(const char *filename, RSA * pub,
     char **comment_return);
 
@@ -430,7 +430,7 @@ load_public_key(const char *filename, RSA * pub,
  * comment_return if it is non-NULL; the caller must free the value with
  * xfree.
  */
  * comment_return if it is non-NULL; the caller must free the value with
  * xfree.
  */
-int 
+int
 load_private_key(const char *filename, const char *passphrase,
     RSA * private_key, char **comment_return);
 
 load_private_key(const char *filename, const char *passphrase,
     RSA * private_key, char **comment_return);
 
diff --git a/ssh2.h b/ssh2.h
index cc659f8470b06d3a6e9af63fe47e768062fdc18d..cf684bacf969e52960831a3a499391c0cacc22ac 100644 (file)
--- a/ssh2.h
+++ b/ssh2.h
@@ -1,31 +1,31 @@
 /*
 /*
- * draft-ietf-secsh-architecture-04.txt 
+ * draft-ietf-secsh-architecture-04.txt
  *
  *   Transport layer protocol:
  *
  *   Transport layer protocol:
- * 
+ *
  *     1-19     Transport layer generic (e.g. disconnect, ignore, debug,
  *              etc)
  *     20-29    Algorithm negotiation
  *     30-49    Key exchange method specific (numbers can be reused for
  *              different authentication methods)
  *     1-19     Transport layer generic (e.g. disconnect, ignore, debug,
  *              etc)
  *     20-29    Algorithm negotiation
  *     30-49    Key exchange method specific (numbers can be reused for
  *              different authentication methods)
- * 
+ *
  *   User authentication protocol:
  *   User authentication protocol:
- * 
+ *
  *     50-59    User authentication generic
  *     60-79    User authentication method specific (numbers can be reused
  *              for different authentication methods)
  *     50-59    User authentication generic
  *     60-79    User authentication method specific (numbers can be reused
  *              for different authentication methods)
- * 
+ *
  *   Connection protocol:
  *   Connection protocol:
- * 
+ *
  *     80-89    Connection protocol generic
  *     90-127   Channel related messages
  *     80-89    Connection protocol generic
  *     90-127   Channel related messages
- * 
+ *
  *   Reserved for client protocols:
  *   Reserved for client protocols:
- * 
+ *
  *     128-191  Reserved
  *     128-191  Reserved
- * 
+ *
  *   Local extensions:
  *   Local extensions:
- * 
+ *
  *     192-255  Local extensions
  */
 
  *     192-255  Local extensions
  */
 
index 675de61022020bc1da5023ff60a3888afb021f7d..bca0bf43afdb88fb56222ad208688ac3baa62c73 100644 (file)
@@ -10,7 +10,7 @@
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: sshconnect.c,v 1.66 2000/04/12 09:39:10 markus Exp $");
+RCSID("$OpenBSD: sshconnect.c,v 1.68 2000/04/14 10:30:33 markus Exp $");
 
 #ifdef HAVE_OPENSSL
 #include <openssl/bn.h>
 
 #ifdef HAVE_OPENSSL
 #include <openssl/bn.h>
@@ -250,7 +250,7 @@ ssh_connect(const char *host, struct sockaddr_storage * hostaddr,
                        debug("Trying again...");
 
                /* Loop through addresses for this host, and try each one in
                        debug("Trying again...");
 
                /* Loop through addresses for this host, and try each one in
-                  sequence until the connection succeeds. */
+                  sequence until the connection succeeds. */
                for (ai = aitop; ai; ai = ai->ai_next) {
                        if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6)
                                continue;
                for (ai = aitop; ai; ai = ai->ai_next) {
                        if (ai->ai_family != AF_INET && ai->ai_family != AF_INET6)
                                continue;
@@ -264,7 +264,7 @@ ssh_connect(const char *host, struct sockaddr_storage * hostaddr,
                                host, ntop, strport);
 
                        /* Create a socket for connecting. */
                                host, ntop, strport);
 
                        /* Create a socket for connecting. */
-                       sock = ssh_create_socket(original_real_uid, 
+                       sock = ssh_create_socket(original_real_uid,
                            !anonymous && geteuid() == 0 && port < IPPORT_RESERVED,
                            ai->ai_family);
                        if (sock < 0)
                            !anonymous && geteuid() == 0 && port < IPPORT_RESERVED,
                            ai->ai_family);
                        if (sock < 0)
@@ -1059,7 +1059,7 @@ ssh_exchange_identification()
                        break;
                }
                /* FALLTHROUGH */
                        break;
                }
                /* FALLTHROUGH */
-       default: 
+       default:
                mismatch = 1;
                break;
        }
                mismatch = 1;
                break;
        }
@@ -1363,13 +1363,13 @@ ssh_kex2(char *host, struct sockaddr *hostaddr)
 
        debug("Sending KEX init.");
        if (options.ciphers != NULL) {
 
        debug("Sending KEX init.");
        if (options.ciphers != NULL) {
-               myproposal[PROPOSAL_ENC_ALGS_CTOS] = 
+               myproposal[PROPOSAL_ENC_ALGS_CTOS] =
                myproposal[PROPOSAL_ENC_ALGS_STOC] = options.ciphers;
        } else if (
            options.cipher == SSH_CIPHER_ARCFOUR ||
                myproposal[PROPOSAL_ENC_ALGS_STOC] = options.ciphers;
        } else if (
            options.cipher == SSH_CIPHER_ARCFOUR ||
-            options.cipher == SSH_CIPHER_3DES_CBC ||
-            options.cipher == SSH_CIPHER_CAST128_CBC ||
-            options.cipher == SSH_CIPHER_BLOWFISH_CBC) {
+           options.cipher == SSH_CIPHER_3DES_CBC ||
+           options.cipher == SSH_CIPHER_CAST128_CBC ||
+           options.cipher == SSH_CIPHER_BLOWFISH_CBC) {
                myproposal[PROPOSAL_ENC_ALGS_CTOS] =
                myproposal[PROPOSAL_ENC_ALGS_STOC] = cipher_name(options.cipher);
        }
                myproposal[PROPOSAL_ENC_ALGS_CTOS] =
                myproposal[PROPOSAL_ENC_ALGS_STOC] = cipher_name(options.cipher);
        }
@@ -1411,6 +1411,7 @@ ssh_kex2(char *host, struct sockaddr *hostaddr)
        debug("first kex follow == %d", i);
        i = packet_get_int();
        debug("reserved == %d", i);
        debug("first kex follow == %d", i);
        i = packet_get_int();
        debug("reserved == %d", i);
+       packet_done();
 
        debug("done read kexinit");
        kex = kex_choose_conf(cprop, sprop, 0);
 
        debug("done read kexinit");
        kex = kex_choose_conf(cprop, sprop, 0);
@@ -1434,7 +1435,7 @@ ssh_kex2(char *host, struct sockaddr *hostaddr)
        fprintf(stderr, "\npub= ");
        bignum_print(dh->pub_key);
        fprintf(stderr, "\n");
        fprintf(stderr, "\npub= ");
        bignum_print(dh->pub_key);
        fprintf(stderr, "\n");
-        DHparams_print_fp(stderr, dh);
+       DHparams_print_fp(stderr, dh);
 #endif
 
        debug("Wait SSH2_MSG_KEXDH_REPLY.");
 #endif
 
        debug("Wait SSH2_MSG_KEXDH_REPLY.");
@@ -1466,6 +1467,7 @@ ssh_kex2(char *host, struct sockaddr *hostaddr)
 
        /* signed H */
        signature = packet_get_string(&slen);
 
        /* signed H */
        signature = packet_get_string(&slen);
+       packet_done();
 
        if (!dh_pub_is_valid(dh, dh_server_pub))
                packet_disconnect("bad server public DH value");
 
        if (!dh_pub_is_valid(dh, dh_server_pub))
                packet_disconnect("bad server public DH value");
@@ -1475,14 +1477,14 @@ ssh_kex2(char *host, struct sockaddr *hostaddr)
        kout = DH_compute_key(kbuf, dh_server_pub, dh);
 #ifdef DEBUG_KEXDH
        debug("shared secret: len %d/%d", klen, kout);
        kout = DH_compute_key(kbuf, dh_server_pub, dh);
 #ifdef DEBUG_KEXDH
        debug("shared secret: len %d/%d", klen, kout);
-        fprintf(stderr, "shared secret == ");
-        for (i = 0; i< kout; i++)
-                fprintf(stderr, "%02x", (kbuf[i])&0xff);
-        fprintf(stderr, "\n");
+       fprintf(stderr, "shared secret == ");
+       for (i = 0; i< kout; i++)
+               fprintf(stderr, "%02x", (kbuf[i])&0xff);
+       fprintf(stderr, "\n");
 #endif
 #endif
-        shared_secret = BN_new();
+       shared_secret = BN_new();
 
 
-        BN_bin2bn(kbuf, kout, shared_secret);
+       BN_bin2bn(kbuf, kout, shared_secret);
        memset(kbuf, 0, klen);
        xfree(kbuf);
 
        memset(kbuf, 0, klen);
        xfree(kbuf);
 
@@ -1502,10 +1504,10 @@ ssh_kex2(char *host, struct sockaddr *hostaddr)
        xfree(client_kexinit);
        xfree(server_kexinit);
 #ifdef DEBUG_KEXDH
        xfree(client_kexinit);
        xfree(server_kexinit);
 #ifdef DEBUG_KEXDH
-        fprintf(stderr, "hash == ");
-        for (i = 0; i< 20; i++)
-                fprintf(stderr, "%02x", (hash[i])&0xff);
-        fprintf(stderr, "\n");
+       fprintf(stderr, "hash == ");
+       for (i = 0; i< 20; i++)
+               fprintf(stderr, "%02x", (hash[i])&0xff);
+       fprintf(stderr, "\n");
 #endif
        dsa_verify(server_host_key, (unsigned char *)signature, slen, hash, 20);
        key_free(server_host_key);
 #endif
        dsa_verify(server_host_key, (unsigned char *)signature, slen, hash, 20);
        key_free(server_host_key);
@@ -1518,6 +1520,7 @@ ssh_kex2(char *host, struct sockaddr *hostaddr)
 
        debug("Wait SSH2_MSG_NEWKEYS.");
        packet_read_expect(&payload_len, SSH2_MSG_NEWKEYS);
 
        debug("Wait SSH2_MSG_NEWKEYS.");
        packet_read_expect(&payload_len, SSH2_MSG_NEWKEYS);
+       packet_done();
        debug("GOT SSH2_MSG_NEWKEYS.");
 
        debug("send SSH2_MSG_NEWKEYS.");
        debug("GOT SSH2_MSG_NEWKEYS.");
 
        debug("send SSH2_MSG_NEWKEYS.");
@@ -1551,7 +1554,7 @@ ssh_userauth2(int host_key_valid, RSA *own_host_key,
        char *server_user, *local_user;
        char *auths;
        char *password;
        char *server_user, *local_user;
        char *auths;
        char *password;
-       char *service = "ssh-connection";               // service name
+       char *service = "ssh-connection";               /* service name */
 
        debug("send SSH2_MSG_SERVICE_REQUEST");
        packet_start(SSH2_MSG_SERVICE_REQUEST);
 
        debug("send SSH2_MSG_SERVICE_REQUEST");
        packet_start(SSH2_MSG_SERVICE_REQUEST);
@@ -1563,8 +1566,15 @@ ssh_userauth2(int host_key_valid, RSA *own_host_key,
        if (type != SSH2_MSG_SERVICE_ACCEPT) {
                fatal("denied SSH2_MSG_SERVICE_ACCEPT: %d", type);
        }
        if (type != SSH2_MSG_SERVICE_ACCEPT) {
                fatal("denied SSH2_MSG_SERVICE_ACCEPT: %d", type);
        }
-       /* payload empty for ssh-2.0.13 ?? */
-       /* reply = packet_get_string(&payload_len); */
+       if (packet_remaining() > 0) {
+               char *reply = packet_get_string(&plen);
+               debug("service_accept: %s", reply);
+               xfree(reply);
+       } else {
+               /* payload empty for ssh-2.0.13 ?? */
+               log("buggy server: service_accept w/o service");
+       }
+       packet_done();
        debug("got SSH2_MSG_SERVICE_ACCEPT");
 
        /*XX COMMONCODE: */
        debug("got SSH2_MSG_SERVICE_ACCEPT");
 
        /*XX COMMONCODE: */
@@ -1593,6 +1603,7 @@ ssh_userauth2(int host_key_valid, RSA *own_host_key,
                auths = packet_get_string(&dlen);
                debug("authentications that can continue: %s", auths);
                partial = packet_get_char();
                auths = packet_get_string(&dlen);
                debug("authentications that can continue: %s", auths);
                partial = packet_get_char();
+               packet_done();
                if (partial)
                        debug("partial success");
                if (strstr(auths, "password") == NULL)
                if (partial)
                        debug("partial success");
                if (strstr(auths, "password") == NULL)
@@ -1613,6 +1624,7 @@ ssh_userauth2(int host_key_valid, RSA *own_host_key,
                packet_send();
                packet_write_wait();
        }
                packet_send();
                packet_write_wait();
        }
+       packet_done();
        debug("ssh-userauth2 successfull");
 }
 
        debug("ssh-userauth2 successfull");
 }
 
diff --git a/sshd.c b/sshd.c
index cd5760ecb1d718d343cc98f2d078d098ae51c0d2..cc6bee96a9c101ba3aa1a570e3ab82ecc1c4c4d7 100644 (file)
--- a/sshd.c
+++ b/sshd.c
@@ -14,7 +14,7 @@
  */
 
 #include "includes.h"
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: sshd.c,v 1.104 2000/04/12 09:39:10 markus Exp $");
+RCSID("$OpenBSD: sshd.c,v 1.105 2000/04/14 10:30:33 markus Exp $");
 
 #include "xmalloc.h"
 #include "rsa.h"
 
 #include "xmalloc.h"
 #include "rsa.h"
@@ -67,7 +67,7 @@ ServerOptions options;
 /* Name of the server configuration file. */
 char *config_file_name = SERVER_CONFIG_FILE;
 
 /* Name of the server configuration file. */
 char *config_file_name = SERVER_CONFIG_FILE;
 
-/* 
+/*
  * Flag indicating whether IPv4 or IPv6.  This can be set on the command line.
  * Default value is AF_UNSPEC means both IPv4 and IPv6.
  */
  * Flag indicating whether IPv4 or IPv6.  This can be set on the command line.
  * Default value is AF_UNSPEC means both IPv4 and IPv6.
  */
@@ -162,7 +162,7 @@ close_listen_socks(void)
  * the effect is to reread the configuration file (and to regenerate
  * the server key).
  */
  * the effect is to reread the configuration file (and to regenerate
  * the server key).
  */
-void 
+void
 sighup_handler(int sig)
 {
        received_sighup = 1;
 sighup_handler(int sig)
 {
        received_sighup = 1;
@@ -173,7 +173,7 @@ sighup_handler(int sig)
  * Called from the main program after receiving SIGHUP.
  * Restarts the server.
  */
  * Called from the main program after receiving SIGHUP.
  * Restarts the server.
  */
-void 
+void
 sighup_restart()
 {
        log("Received SIGHUP; restarting.");
 sighup_restart()
 {
        log("Received SIGHUP; restarting.");
@@ -188,7 +188,7 @@ sighup_restart()
  * These close the listen socket; not closing it seems to cause "Address
  * already in use" problems on some machines, which is inconvenient.
  */
  * These close the listen socket; not closing it seems to cause "Address
  * already in use" problems on some machines, which is inconvenient.
  */
-void 
+void
 sigterm_handler(int sig)
 {
        log("Received signal %d; terminating.", sig);
 sigterm_handler(int sig)
 {
        log("Received signal %d; terminating.", sig);
@@ -200,7 +200,7 @@ sigterm_handler(int sig)
  * SIGCHLD handler.  This is called whenever a child dies.  This will then
  * reap any zombies left by exited c.
  */
  * SIGCHLD handler.  This is called whenever a child dies.  This will then
  * reap any zombies left by exited c.
  */
-void 
+void
 main_sigchld_handler(int sig)
 {
        int save_errno = errno;
 main_sigchld_handler(int sig)
 {
        int save_errno = errno;
@@ -216,7 +216,7 @@ main_sigchld_handler(int sig)
 /*
  * Signal handler for the alarm after the login grace period has expired.
  */
 /*
  * Signal handler for the alarm after the login grace period has expired.
  */
-void 
+void
 grace_alarm_handler(int sig)
 {
        /* Close the connection. */
 grace_alarm_handler(int sig)
 {
        /* Close the connection. */
@@ -233,7 +233,7 @@ grace_alarm_handler(int sig)
  * Thus there should be no concurrency control/asynchronous execution
  * problems.
  */
  * Thus there should be no concurrency control/asynchronous execution
  * problems.
  */
-void 
+void
 key_regeneration_alarm(int sig)
 {
        int save_errno = errno;
 key_regeneration_alarm(int sig)
 {
        int save_errno = errno;
@@ -266,15 +266,15 @@ key_regeneration_alarm(int sig)
 char *
 chop(char *s)
 {
 char *
 chop(char *s)
 {
-        char *t = s;
-        while (*t) {
-                if(*t == '\n' || *t == '\r') {
-                        *t = '\0';
-                        return s;
-                }
-                t++;
-        }
-        return s;
+       char *t = s;
+       while (*t) {
+               if(*t == '\n' || *t == '\r') {
+                       *t = '\0';
+                       return s;
+               }
+               t++;
+       }
+       return s;
 
 }
 
 
 }
 
@@ -337,7 +337,7 @@ sshd_exchange_identification(int sock_in, int sock_out)
         */
        if (sscanf(client_version_string, "SSH-%d.%d-%[^\n]\n",
            &remote_major, &remote_minor, remote_version) != 3) {
         */
        if (sscanf(client_version_string, "SSH-%d.%d-%[^\n]\n",
            &remote_major, &remote_minor, remote_version) != 3) {
-               s = "Protocol mismatch.\n";
+               s = "Protocol mismatch.\n";
                (void) atomicio(write, sock_out, s, strlen(s));
                close(sock_in);
                close(sock_out);
                (void) atomicio(write, sock_out, s, strlen(s));
                close(sock_in);
                close(sock_out);
@@ -377,7 +377,7 @@ sshd_exchange_identification(int sock_in, int sock_out)
                        break;
                }
                /* FALLTHROUGH */
                        break;
                }
                /* FALLTHROUGH */
-       default: 
+       default:
                mismatch = 1;
                break;
        }
                mismatch = 1;
                break;
        }
@@ -719,8 +719,8 @@ main(int ac, char **av)
                for (i = 0; i < num_listen_socks; i++)
                        if (listen_socks[i] > maxfd)
                                maxfd = listen_socks[i];
                for (i = 0; i < num_listen_socks; i++)
                        if (listen_socks[i] > maxfd)
                                maxfd = listen_socks[i];
-               fdsetsz = howmany(maxfd, NFDBITS) * sizeof(fd_mask);         
-               fdset = (fd_set *)xmalloc(fdsetsz);                                  
+               fdsetsz = howmany(maxfd, NFDBITS) * sizeof(fd_mask);
+               fdset = (fd_set *)xmalloc(fdsetsz);
 
                /*
                 * Stay listening for connections until the system crashes or
 
                /*
                 * Stay listening for connections until the system crashes or
@@ -1018,7 +1018,7 @@ do_ssh1_kex()
        /* Get cipher type and check whether we accept this. */
        cipher_type = packet_get_char();
 
        /* Get cipher type and check whether we accept this. */
        cipher_type = packet_get_char();
 
-        if (!(cipher_mask() & (1 << cipher_type)))
+       if (!(cipher_mask() & (1 << cipher_type)))
                packet_disconnect("Warning: client selects unsupported cipher.");
 
        /* Get check bytes from the packet.  These must match those we
                packet_disconnect("Warning: client selects unsupported cipher.");
 
        /* Get check bytes from the packet.  These must match those we
@@ -1145,7 +1145,7 @@ do_ssh2_kex()
 /* KEXINIT */
 
        if (options.ciphers != NULL) {
 /* KEXINIT */
 
        if (options.ciphers != NULL) {
-               myproposal[PROPOSAL_ENC_ALGS_CTOS] = 
+               myproposal[PROPOSAL_ENC_ALGS_CTOS] =
                myproposal[PROPOSAL_ENC_ALGS_STOC] = options.ciphers;
        }
 
                myproposal[PROPOSAL_ENC_ALGS_STOC] = options.ciphers;
        }
 
@@ -1258,10 +1258,10 @@ do_ssh2_kex()
        xfree(client_kexinit);
        xfree(server_kexinit);
 #ifdef DEBUG_KEXDH
        xfree(client_kexinit);
        xfree(server_kexinit);
 #ifdef DEBUG_KEXDH
-        fprintf(stderr, "hash == ");
-        for (i = 0; i< 20; i++)
-                fprintf(stderr, "%02x", (hash[i])&0xff);
-        fprintf(stderr, "\n");
+       fprintf(stderr, "hash == ");
+       for (i = 0; i< 20; i++)
+               fprintf(stderr, "%02x", (hash[i])&0xff);
+       fprintf(stderr, "\n");
 #endif
        /* sign H */
        dsa_sign(server_host_key, &signature, &slen, hash, 20);
 #endif
        /* sign H */
        dsa_sign(server_host_key, &signature, &slen, hash, 20);
index 36e133ca57d0cf5a11b8d6be51e47802a265cca6..d69ac2a91aea3bee79f20378df944404f6f42223 100644 (file)
@@ -23,7 +23,7 @@ RCSID("$Id$");
  * Converts POSIX speed_t to a baud rate.  The values of the
  * constants for speed_t are not themselves portable.
  */
  * Converts POSIX speed_t to a baud rate.  The values of the
  * constants for speed_t are not themselves portable.
  */
-static int 
+static int
 speed_to_baud(speed_t speed)
 {
        switch (speed) {
 speed_to_baud(speed_t speed)
 {
        switch (speed) {
@@ -112,7 +112,7 @@ speed_to_baud(speed_t speed)
 /*
  * Converts a numeric baud rate to a POSIX speed_t.
  */
 /*
  * Converts a numeric baud rate to a POSIX speed_t.
  */
-static speed_t 
+static speed_t
 baud_to_speed(int baud)
 {
        switch (baud) {
 baud_to_speed(int baud)
 {
        switch (baud) {
@@ -203,7 +203,7 @@ baud_to_speed(int baud)
  * in a portable manner, and appends the modes to a packet
  * being constructed.
  */
  * in a portable manner, and appends the modes to a packet
  * being constructed.
  */
-void 
+void
 tty_make_modes(int fd)
 {
        struct termios tio;
 tty_make_modes(int fd)
 {
        struct termios tio;
@@ -247,7 +247,7 @@ tty_make_modes(int fd)
  * Decodes terminal modes for the terminal referenced by fd in a portable
  * manner from a packet being read.
  */
  * Decodes terminal modes for the terminal referenced by fd in a portable
  * manner from a packet being read.
  */
-void 
+void
 tty_parse_modes(int fd, int *n_bytes_ptr)
 {
        struct termios tio;
 tty_parse_modes(int fd, int *n_bytes_ptr)
 {
        struct termios tio;
index 60ca0c09767a92e4447ac9acc9a5a6e0597b3aa7..312b84480b08ffc56247c9bc8270435263406132 100644 (file)
@@ -1,15 +1,15 @@
 /*
 /*
- * 
+ *
  * ttymodes.h
  * ttymodes.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  *     SGTTY stuff contributed by Janne Snabb <snabb@niksula.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  *     SGTTY stuff contributed by Janne Snabb <snabb@niksula.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Tue Mar 21 15:42:09 1995 ylo
  * Created: Tue Mar 21 15:42:09 1995 ylo
- * 
+ *
  */
 
 /* RCSID("$Id$"); */
  */
 
 /* RCSID("$Id$"); */
index 3cd73ade19a84a9763135e9a46be3bb8edf22f60..8668aed7fc7dbc97b252b12a190ff48d70d525d0 100644 (file)
--- a/uidswap.c
+++ b/uidswap.c
@@ -35,7 +35,7 @@ static uid_t saved_euid = 0;
  * Temporarily changes to the given uid.  If the effective user
  * id is not root, this does nothing.  This call cannot be nested.
  */
  * Temporarily changes to the given uid.  If the effective user
  * id is not root, this does nothing.  This call cannot be nested.
  */
-void 
+void
 temporarily_use_uid(uid_t uid)
 {
 #ifdef SAVED_IDS_WORK_WITH_SETEUID
 temporarily_use_uid(uid_t uid)
 {
 #ifdef SAVED_IDS_WORK_WITH_SETEUID
@@ -59,7 +59,7 @@ temporarily_use_uid(uid_t uid)
 /*
  * Restores to the original uid.
  */
 /*
  * Restores to the original uid.
  */
-void 
+void
 restore_uid()
 {
 #ifdef SAVED_IDS_WORK_WITH_SETEUID
 restore_uid()
 {
 #ifdef SAVED_IDS_WORK_WITH_SETEUID
@@ -80,7 +80,7 @@ restore_uid()
  * Permanently sets all uids to the given uid.  This cannot be
  * called while temporarily_use_uid is effective.
  */
  * Permanently sets all uids to the given uid.  This cannot be
  * called while temporarily_use_uid is effective.
  */
-void 
+void
 permanently_set_uid(uid_t uid)
 {
        if (setuid(uid) < 0)
 permanently_set_uid(uid_t uid)
 {
        if (setuid(uid) < 0)
index 4755710dea9bf2ab61e0a9982c73a33140768a39..c08a37004616815984b5fc8020a538eefb8dd359 100644 (file)
--- a/uidswap.h
+++ b/uidswap.h
@@ -1,15 +1,15 @@
 /*
 /*
- * 
+ *
  * uidswap.h
  * uidswap.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Sat Sep  9 01:43:15 1995 ylo
  * Last modified: Sat Sep  9 02:34:04 1995 ylo
  * Created: Sat Sep  9 01:43:15 1995 ylo
  * Last modified: Sat Sep  9 02:34:04 1995 ylo
- * 
+ *
  */
 
 #ifndef UIDSWAP_H
  */
 
 #ifndef UIDSWAP_H
index de1bbae1e46e09413911b8a3260517ab533cfbf7..dcb3d4eddb954d4fb20a34f4cae163f477375fa9 100644 (file)
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -34,7 +34,7 @@ xrealloc(void *ptr, size_t new_size)
        return new_ptr;
 }
 
        return new_ptr;
 }
 
-void 
+void
 xfree(void *ptr)
 {
        if (ptr == NULL)
 xfree(void *ptr)
 {
        if (ptr == NULL)
index 22cdafda2931b9df32228bcdaefc8b92fbfcd01a..c3d95ff460b7c443cf94e1081e64b343b4c344df 100644 (file)
--- a/xmalloc.h
+++ b/xmalloc.h
@@ -1,17 +1,17 @@
 /*
 /*
- * 
+ *
  * xmalloc.h
  * xmalloc.h
- * 
+ *
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
  * Author: Tatu Ylonen <ylo@cs.hut.fi>
- * 
+ *
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
  * Copyright (c) 1995 Tatu Ylonen <ylo@cs.hut.fi>, Espoo, Finland
  *                    All rights reserved
- * 
+ *
  * Created: Mon Mar 20 22:09:17 1995 ylo
  * Created: Mon Mar 20 22:09:17 1995 ylo
- * 
+ *
  * Versions of malloc and friends that check their results, and never return
  * failure (they call fatal if they encounter an error).
  * Versions of malloc and friends that check their results, and never return
  * failure (they call fatal if they encounter an error).
- * 
+ *
  */
 
 /* RCSID("$Id$"); */
  */
 
 /* RCSID("$Id$"); */
This page took 0.517928 seconds and 5 git commands to generate.