summaryrefslogtreecommitdiff
path: root/sftp-client.c
diff options
context:
space:
mode:
Diffstat (limited to 'sftp-client.c')
-rw-r--r--sftp-client.c37
1 files changed, 20 insertions, 17 deletions
diff --git a/sftp-client.c b/sftp-client.c
index e42823841..e8b9007fe 100644
--- a/sftp-client.c
+++ b/sftp-client.c
@@ -29,7 +29,7 @@
29/* XXX: copy between two remote sites */ 29/* XXX: copy between two remote sites */
30 30
31#include "includes.h" 31#include "includes.h"
32RCSID("$OpenBSD: sftp-client.c,v 1.3 2001/02/04 15:32:25 stevesk Exp $"); 32RCSID("$OpenBSD: sftp-client.c,v 1.4 2001/02/06 23:30:28 djm Exp $");
33 33
34#include "ssh.h" 34#include "ssh.h"
35#include "buffer.h" 35#include "buffer.h"
@@ -48,6 +48,9 @@ RCSID("$OpenBSD: sftp-client.c,v 1.3 2001/02/04 15:32:25 stevesk Exp $");
48/* XXX: what should this be? */ 48/* XXX: what should this be? */
49#define COPY_SIZE 8192 49#define COPY_SIZE 8192
50 50
51/* Message ID */
52static u_int msg_id = 1;
53
51void 54void
52send_msg(int fd, Buffer *m) 55send_msg(int fd, Buffer *m)
53{ 56{
@@ -255,7 +258,7 @@ do_close(int fd_in, int fd_out, char *handle, u_int handle_len)
255 258
256 buffer_init(&msg); 259 buffer_init(&msg);
257 260
258 id = arc4random(); 261 id = msg_id++;
259 buffer_put_char(&msg, SSH2_FXP_CLOSE); 262 buffer_put_char(&msg, SSH2_FXP_CLOSE);
260 buffer_put_int(&msg, id); 263 buffer_put_int(&msg, id);
261 buffer_put_string(&msg, handle, handle_len); 264 buffer_put_string(&msg, handle, handle_len);
@@ -278,7 +281,7 @@ do_ls(int fd_in, int fd_out, char *path)
278 u_int type, id, handle_len, i, expected_id; 281 u_int type, id, handle_len, i, expected_id;
279 char *handle; 282 char *handle;
280 283
281 id = arc4random(); 284 id = msg_id++;
282 285
283 buffer_init(&msg); 286 buffer_init(&msg);
284 buffer_put_char(&msg, SSH2_FXP_OPENDIR); 287 buffer_put_char(&msg, SSH2_FXP_OPENDIR);
@@ -295,7 +298,7 @@ do_ls(int fd_in, int fd_out, char *path)
295 for(;;) { 298 for(;;) {
296 int count; 299 int count;
297 300
298 expected_id = ++id; 301 id = expected_id = msg_id++;
299 302
300 debug3("Sending SSH2_FXP_READDIR I:%d", id); 303 debug3("Sending SSH2_FXP_READDIR I:%d", id);
301 304
@@ -365,7 +368,7 @@ do_rm(int fd_in, int fd_out, char *path)
365 368
366 debug2("Sending SSH2_FXP_REMOVE \"%s\"", path); 369 debug2("Sending SSH2_FXP_REMOVE \"%s\"", path);
367 370
368 id = arc4random(); 371 id = msg_id++;
369 send_string_request(fd_out, id, SSH2_FXP_REMOVE, path, strlen(path)); 372 send_string_request(fd_out, id, SSH2_FXP_REMOVE, path, strlen(path));
370 status = get_status(fd_in, id); 373 status = get_status(fd_in, id);
371 if (status != SSH2_FX_OK) 374 if (status != SSH2_FX_OK)
@@ -378,7 +381,7 @@ do_mkdir(int fd_in, int fd_out, char *path, Attrib *a)
378{ 381{
379 u_int status, id; 382 u_int status, id;
380 383
381 id = arc4random(); 384 id = msg_id++;
382 send_string_attrs_request(fd_out, id, SSH2_FXP_MKDIR, path, 385 send_string_attrs_request(fd_out, id, SSH2_FXP_MKDIR, path,
383 strlen(path), a); 386 strlen(path), a);
384 387
@@ -394,7 +397,7 @@ do_rmdir(int fd_in, int fd_out, char *path)
394{ 397{
395 u_int status, id; 398 u_int status, id;
396 399
397 id = arc4random(); 400 id = msg_id++;
398 send_string_request(fd_out, id, SSH2_FXP_RMDIR, path, strlen(path)); 401 send_string_request(fd_out, id, SSH2_FXP_RMDIR, path, strlen(path));
399 402
400 status = get_status(fd_in, id); 403 status = get_status(fd_in, id);
@@ -409,7 +412,7 @@ do_stat(int fd_in, int fd_out, char *path)
409{ 412{
410 u_int id; 413 u_int id;
411 414
412 id = arc4random(); 415 id = msg_id++;
413 send_string_request(fd_out, id, SSH2_FXP_STAT, path, strlen(path)); 416 send_string_request(fd_out, id, SSH2_FXP_STAT, path, strlen(path));
414 return(get_decode_stat(fd_in, id)); 417 return(get_decode_stat(fd_in, id));
415} 418}
@@ -419,7 +422,7 @@ do_lstat(int fd_in, int fd_out, char *path)
419{ 422{
420 u_int id; 423 u_int id;
421 424
422 id = arc4random(); 425 id = msg_id++;
423 send_string_request(fd_out, id, SSH2_FXP_LSTAT, path, strlen(path)); 426 send_string_request(fd_out, id, SSH2_FXP_LSTAT, path, strlen(path));
424 return(get_decode_stat(fd_in, id)); 427 return(get_decode_stat(fd_in, id));
425} 428}
@@ -430,7 +433,7 @@ do_fstat(int fd_in, int fd_out, char *handle,
430{ 433{
431 u_int id; 434 u_int id;
432 435
433 id = arc4random(); 436 id = msg_id++;
434 send_string_request(fd_out, id, SSH2_FXP_FSTAT, handle, handle_len); 437 send_string_request(fd_out, id, SSH2_FXP_FSTAT, handle, handle_len);
435 return(get_decode_stat(fd_in, id)); 438 return(get_decode_stat(fd_in, id));
436} 439}
@@ -440,7 +443,7 @@ do_setstat(int fd_in, int fd_out, char *path, Attrib *a)
440{ 443{
441 u_int status, id; 444 u_int status, id;
442 445
443 id = arc4random(); 446 id = msg_id++;
444 send_string_attrs_request(fd_out, id, SSH2_FXP_SETSTAT, path, 447 send_string_attrs_request(fd_out, id, SSH2_FXP_SETSTAT, path,
445 strlen(path), a); 448 strlen(path), a);
446 449
@@ -458,7 +461,7 @@ do_fsetstat(int fd_in, int fd_out, char *handle, u_int handle_len,
458{ 461{
459 u_int status, id; 462 u_int status, id;
460 463
461 id = arc4random(); 464 id = msg_id++;
462 send_string_attrs_request(fd_out, id, SSH2_FXP_FSETSTAT, handle, 465 send_string_attrs_request(fd_out, id, SSH2_FXP_FSETSTAT, handle,
463 handle_len, a); 466 handle_len, a);
464 467
@@ -477,7 +480,7 @@ do_realpath(int fd_in, int fd_out, char *path)
477 char *filename, *longname; 480 char *filename, *longname;
478 Attrib *a; 481 Attrib *a;
479 482
480 expected_id = id = arc4random(); 483 expected_id = id = msg_id++;
481 send_string_request(fd_out, id, SSH2_FXP_REALPATH, path, 484 send_string_request(fd_out, id, SSH2_FXP_REALPATH, path,
482 strlen(path)); 485 strlen(path));
483 486
@@ -525,7 +528,7 @@ do_rename(int fd_in, int fd_out, char *oldpath, char *newpath)
525 buffer_init(&msg); 528 buffer_init(&msg);
526 529
527 /* Send rename request */ 530 /* Send rename request */
528 id = arc4random(); 531 id = msg_id++;
529 buffer_put_char(&msg, SSH2_FXP_RENAME); 532 buffer_put_char(&msg, SSH2_FXP_RENAME);
530 buffer_put_int(&msg, id); 533 buffer_put_int(&msg, id);
531 buffer_put_cstring(&msg, oldpath); 534 buffer_put_cstring(&msg, oldpath);
@@ -588,7 +591,7 @@ do_download(int fd_in, int fd_out, char *remote_path, char *local_path,
588 buffer_init(&msg); 591 buffer_init(&msg);
589 592
590 /* Send open request */ 593 /* Send open request */
591 id = arc4random(); 594 id = msg_id++;
592 buffer_put_char(&msg, SSH2_FXP_OPEN); 595 buffer_put_char(&msg, SSH2_FXP_OPEN);
593 buffer_put_int(&msg, id); 596 buffer_put_int(&msg, id);
594 buffer_put_cstring(&msg, remote_path); 597 buffer_put_cstring(&msg, remote_path);
@@ -611,7 +614,7 @@ do_download(int fd_in, int fd_out, char *remote_path, char *local_path,
611 u_int len; 614 u_int len;
612 char *data; 615 char *data;
613 616
614 expected_id = ++id; 617 id = expected_id = msg_id++;
615 618
616 buffer_clear(&msg); 619 buffer_clear(&msg);
617 buffer_put_char(&msg, SSH2_FXP_READ); 620 buffer_put_char(&msg, SSH2_FXP_READ);
@@ -713,7 +716,7 @@ do_upload(int fd_in, int fd_out, char *local_path, char *remote_path,
713 buffer_init(&msg); 716 buffer_init(&msg);
714 717
715 /* Send open request */ 718 /* Send open request */
716 id = arc4random(); 719 id = msg_id++;
717 buffer_put_char(&msg, SSH2_FXP_OPEN); 720 buffer_put_char(&msg, SSH2_FXP_OPEN);
718 buffer_put_int(&msg, id); 721 buffer_put_int(&msg, id);
719 buffer_put_cstring(&msg, remote_path); 722 buffer_put_cstring(&msg, remote_path);