diff options
Diffstat (limited to 'clientloop.c')
-rw-r--r-- | clientloop.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/clientloop.c b/clientloop.c index ee36cc9e5..a030cf6e4 100644 --- a/clientloop.c +++ b/clientloop.c | |||
@@ -59,7 +59,7 @@ | |||
59 | */ | 59 | */ |
60 | 60 | ||
61 | #include "includes.h" | 61 | #include "includes.h" |
62 | RCSID("$OpenBSD: clientloop.c,v 1.138 2005/06/16 03:38:36 djm Exp $"); | 62 | RCSID("$OpenBSD: clientloop.c,v 1.139 2005/06/17 02:44:32 djm Exp $"); |
63 | 63 | ||
64 | #include "ssh.h" | 64 | #include "ssh.h" |
65 | #include "ssh1.h" | 65 | #include "ssh1.h" |
@@ -659,12 +659,12 @@ client_process_control(fd_set * readset) | |||
659 | { | 659 | { |
660 | Buffer m; | 660 | Buffer m; |
661 | Channel *c; | 661 | Channel *c; |
662 | int client_fd, new_fd[3], ver, i, allowed; | 662 | int client_fd, new_fd[3], ver, allowed; |
663 | socklen_t addrlen; | 663 | socklen_t addrlen; |
664 | struct sockaddr_storage addr; | 664 | struct sockaddr_storage addr; |
665 | struct confirm_ctx *cctx; | 665 | struct confirm_ctx *cctx; |
666 | char *cmd; | 666 | char *cmd; |
667 | u_int len, env_len, command, flags; | 667 | u_int i, len, env_len, command, flags; |
668 | uid_t euid; | 668 | uid_t euid; |
669 | gid_t egid; | 669 | gid_t egid; |
670 | 670 | ||
@@ -971,7 +971,10 @@ process_escapes(Buffer *bin, Buffer *bout, Buffer *berr, char *buf, int len) | |||
971 | u_char ch; | 971 | u_char ch; |
972 | char *s; | 972 | char *s; |
973 | 973 | ||
974 | for (i = 0; i < len; i++) { | 974 | if (len <= 0) |
975 | return (0); | ||
976 | |||
977 | for (i = 0; i < (u_int)len; i++) { | ||
975 | /* Get one character at a time. */ | 978 | /* Get one character at a time. */ |
976 | ch = buf[i]; | 979 | ch = buf[i]; |
977 | 980 | ||