diff options
Diffstat (limited to 'channels.c')
-rw-r--r-- | channels.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/channels.c b/channels.c index 354160e8f..a079fc24d 100644 --- a/channels.c +++ b/channels.c | |||
@@ -40,7 +40,7 @@ | |||
40 | */ | 40 | */ |
41 | 41 | ||
42 | #include "includes.h" | 42 | #include "includes.h" |
43 | RCSID("$OpenBSD: channels.c,v 1.89 2001/02/04 15:32:23 stevesk Exp $"); | 43 | RCSID("$OpenBSD: channels.c,v 1.90 2001/02/08 21:58:28 markus Exp $"); |
44 | 44 | ||
45 | #include <openssl/rsa.h> | 45 | #include <openssl/rsa.h> |
46 | #include <openssl/dsa.h> | 46 | #include <openssl/dsa.h> |
@@ -2227,7 +2227,7 @@ x11_request_forwarding_with_spoofing(int client_session_id, | |||
2227 | const char *proto, const char *data) | 2227 | const char *proto, const char *data) |
2228 | { | 2228 | { |
2229 | u_int data_len = (u_int) strlen(data) / 2; | 2229 | u_int data_len = (u_int) strlen(data) / 2; |
2230 | u_int i, value; | 2230 | u_int i, value, len; |
2231 | char *new_data; | 2231 | char *new_data; |
2232 | int screen_number; | 2232 | int screen_number; |
2233 | const char *cp; | 2233 | const char *cp; |
@@ -2265,9 +2265,11 @@ x11_request_forwarding_with_spoofing(int client_session_id, | |||
2265 | x11_fake_data_len = data_len; | 2265 | x11_fake_data_len = data_len; |
2266 | 2266 | ||
2267 | /* Convert the fake data into hex. */ | 2267 | /* Convert the fake data into hex. */ |
2268 | new_data = xmalloc(2 * data_len + 1); | 2268 | len = 2 * data_len + 1; |
2269 | new_data = xmalloc(len); | ||
2269 | for (i = 0; i < data_len; i++) | 2270 | for (i = 0; i < data_len; i++) |
2270 | sprintf(new_data + 2 * i, "%02x", (u_char) x11_fake_data[i]); | 2271 | snprintf(new_data + 2 * i, len - 2 * i, |
2272 | "%02x", (u_char) x11_fake_data[i]); | ||
2271 | 2273 | ||
2272 | /* Send the request packet. */ | 2274 | /* Send the request packet. */ |
2273 | if (compat20) { | 2275 | if (compat20) { |