diff options
Diffstat (limited to 'scp.c')
-rw-r--r-- | scp.c | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -71,7 +71,7 @@ | |||
71 | */ | 71 | */ |
72 | 72 | ||
73 | #include "includes.h" | 73 | #include "includes.h" |
74 | RCSID("$OpenBSD: scp.c,v 1.126 2005/09/13 23:40:07 djm Exp $"); | 74 | RCSID("$OpenBSD: scp.c,v 1.127 2005/11/12 18:38:15 deraadt Exp $"); |
75 | 75 | ||
76 | #include "xmalloc.h" | 76 | #include "xmalloc.h" |
77 | #include "atomicio.h" | 77 | #include "atomicio.h" |
@@ -571,7 +571,10 @@ syserr: run_err("%s: %s", name, strerror(errno)); | |||
571 | if (response() < 0) | 571 | if (response() < 0) |
572 | goto next; | 572 | goto next; |
573 | if ((bp = allocbuf(&buffer, fd, 2048)) == NULL) { | 573 | if ((bp = allocbuf(&buffer, fd, 2048)) == NULL) { |
574 | next: (void) close(fd); | 574 | next: if (fd != -1) { |
575 | (void) close(fd); | ||
576 | fd = -1; | ||
577 | } | ||
575 | continue; | 578 | continue; |
576 | } | 579 | } |
577 | if (showprogress) | 580 | if (showprogress) |
@@ -600,8 +603,11 @@ next: (void) close(fd); | |||
600 | if (showprogress) | 603 | if (showprogress) |
601 | stop_progress_meter(); | 604 | stop_progress_meter(); |
602 | 605 | ||
603 | if (close(fd) < 0 && !haderr) | 606 | if (fd != -1) { |
604 | haderr = errno; | 607 | if (close(fd) < 0 && !haderr) |
608 | haderr = errno; | ||
609 | fd = -1; | ||
610 | } | ||
605 | if (!haderr) | 611 | if (!haderr) |
606 | (void) atomicio(vwrite, remout, "", 1); | 612 | (void) atomicio(vwrite, remout, "", 1); |
607 | else | 613 | else |