Module Name:    src
Committed By:   christos
Date:           Wed Apr  8 15:49:47 UTC 2015

Modified Files:
        src/crypto/external/bsd/openssh/dist: dispatch.c packet.c

Log Message:
ssh_packet_write_wait() returns number of bytes now; check for negative
for error instead of 0. Fixes ssh command restrictions, reported by
Tobias Nygren.


To generate a diff of this commit:
cvs rdiff -u -r1.4 -r1.5 src/crypto/external/bsd/openssh/dist/dispatch.c
cvs rdiff -u -r1.16 -r1.17 src/crypto/external/bsd/openssh/dist/packet.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/crypto/external/bsd/openssh/dist/dispatch.c
diff -u src/crypto/external/bsd/openssh/dist/dispatch.c:1.4 src/crypto/external/bsd/openssh/dist/dispatch.c:1.5
--- src/crypto/external/bsd/openssh/dist/dispatch.c:1.4	Fri Apr  3 19:58:19 2015
+++ src/crypto/external/bsd/openssh/dist/dispatch.c	Wed Apr  8 11:49:46 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: dispatch.c,v 1.4 2015/04/03 23:58:19 christos Exp $	*/
+/*	$NetBSD: dispatch.c,v 1.5 2015/04/08 15:49:46 christos Exp $	*/
 /* $OpenBSD: dispatch.c,v 1.26 2015/02/12 20:34:19 dtucker Exp $ */
 /*
  * Copyright (c) 2000 Markus Friedl.  All rights reserved.
@@ -25,7 +25,7 @@
  */
 
 #include "includes.h"
-__RCSID("$NetBSD: dispatch.c,v 1.4 2015/04/03 23:58:19 christos Exp $");
+__RCSID("$NetBSD: dispatch.c,v 1.5 2015/04/08 15:49:46 christos Exp $");
 #include <sys/types.h>
 
 #include <signal.h>
@@ -51,7 +51,7 @@ dispatch_protocol_error(int type, u_int3
 	if ((r = sshpkt_start(ssh, SSH2_MSG_UNIMPLEMENTED)) != 0 ||
 	    (r = sshpkt_put_u32(ssh, seq)) != 0 ||
 	    (r = sshpkt_send(ssh)) != 0 ||
-	    (r = ssh_packet_write_wait(ssh)) != 0)
+	    (r = ssh_packet_write_wait(ssh)) < 0)
 		sshpkt_fatal(ssh, __func__, r);
 	return 0;
 }

Index: src/crypto/external/bsd/openssh/dist/packet.c
diff -u src/crypto/external/bsd/openssh/dist/packet.c:1.16 src/crypto/external/bsd/openssh/dist/packet.c:1.17
--- src/crypto/external/bsd/openssh/dist/packet.c:1.16	Fri Apr  3 19:58:19 2015
+++ src/crypto/external/bsd/openssh/dist/packet.c	Wed Apr  8 11:49:46 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: packet.c,v 1.16 2015/04/03 23:58:19 christos Exp $	*/
+/*	$NetBSD: packet.c,v 1.17 2015/04/08 15:49:46 christos Exp $	*/
 /* $OpenBSD: packet.c,v 1.208 2015/02/13 18:57:00 markus Exp $ */
 /*
  * Author: Tatu Ylonen <y...@cs.hut.fi>
@@ -39,7 +39,7 @@
  */
 
 #include "includes.h"
-__RCSID("$NetBSD: packet.c,v 1.16 2015/04/03 23:58:19 christos Exp $");
+__RCSID("$NetBSD: packet.c,v 1.17 2015/04/08 15:49:46 christos Exp $");
 #include <sys/param.h>	/* MIN roundup */
 #include <sys/types.h>
 #include <sys/queue.h>
@@ -1452,7 +1452,7 @@ ssh_packet_read_poll1(struct ssh *ssh, u
 		if (emsg != NULL) {
 			error("%s", emsg);
 			if ((r = sshpkt_disconnect(ssh, "%s", emsg)) != 0 ||
-			    (r = ssh_packet_write_wait(ssh)) != 0)
+			    (r = ssh_packet_write_wait(ssh)) < 0)
 					return r;
 			return SSH_ERR_CONN_CORRUPT;
 		}
@@ -1487,7 +1487,7 @@ ssh_packet_read_poll1(struct ssh *ssh, u
 		error("%s: len %d != sshbuf_len %zd", __func__,
 		    len, sshbuf_len(state->incoming_packet));
 		if ((r = sshpkt_disconnect(ssh, "invalid packet length")) != 0 ||
-		    (r = ssh_packet_write_wait(ssh)) != 0)
+		    (r = ssh_packet_write_wait(ssh)) < 0)
 			return r;
 		return SSH_ERR_CONN_CORRUPT;
 	}
@@ -1497,7 +1497,7 @@ ssh_packet_read_poll1(struct ssh *ssh, u
 	if (checksum != stored_checksum) {
 		error("Corrupted check bytes on input");
 		if ((r = sshpkt_disconnect(ssh, "connection corrupted")) != 0 ||
-		    (r = ssh_packet_write_wait(ssh)) != 0)
+		    (r = ssh_packet_write_wait(ssh)) < 0)
 			return r;
 		return SSH_ERR_CONN_CORRUPT;
 	}
@@ -1521,7 +1521,7 @@ ssh_packet_read_poll1(struct ssh *ssh, u
 	if (*typep < SSH_MSG_MIN || *typep > SSH_MSG_MAX) {
 		error("Invalid ssh1 packet type: %d", *typep);
 		if ((r = sshpkt_disconnect(ssh, "invalid packet type")) != 0 ||
-		    (r = ssh_packet_write_wait(ssh)) != 0)
+		    (r = ssh_packet_write_wait(ssh)) < 0)
 			return r;
 		return SSH_ERR_PROTOCOL_ERROR;
 	}
@@ -1694,7 +1694,7 @@ ssh_packet_read_poll2(struct ssh *ssh, u
 	if (padlen < 4)	{
 		if ((r = sshpkt_disconnect(ssh,
 		    "Corrupted padlen %d on input.", padlen)) != 0 ||
-		    (r = ssh_packet_write_wait(ssh)) != 0)
+		    (r = ssh_packet_write_wait(ssh)) < 0)
 			return r;
 		return SSH_ERR_CONN_CORRUPT;
 	}
@@ -1727,7 +1727,7 @@ ssh_packet_read_poll2(struct ssh *ssh, u
 	if (*typep < SSH2_MSG_MIN || *typep >= SSH2_MSG_LOCAL_MIN) {
 		if ((r = sshpkt_disconnect(ssh,
 		    "Invalid ssh2 packet type: %d", *typep)) != 0 ||
-		    (r = ssh_packet_write_wait(ssh)) != 0)
+		    (r = ssh_packet_write_wait(ssh)) < 0)
 			return r;
 		return SSH_ERR_PROTOCOL_ERROR;
 	}
@@ -1896,7 +1896,7 @@ ssh_packet_send_debug(struct ssh *ssh, c
 		    (r = sshpkt_send(ssh)) != 0)
 			fatal("%s: %s", __func__, ssh_err(r));
 	}
-	if ((r = ssh_packet_write_wait(ssh)) != 0)
+	if ((r = ssh_packet_write_wait(ssh)) < 0)
 		fatal("%s: %s", __func__, ssh_err(r));
 }
 
@@ -1957,7 +1957,7 @@ ssh_packet_disconnect(struct ssh *ssh, c
 	if ((r = sshpkt_disconnect(ssh, "%s", buf)) != 0)
 		sshpkt_fatal(ssh, __func__, r);
 
-	if ((r = ssh_packet_write_wait(ssh)) != 0)
+	if ((r = ssh_packet_write_wait(ssh)) < 0)
 		sshpkt_fatal(ssh, __func__, r);
 
 	/* Close the connection. */

Reply via email to