From 3669a0daa2b6094e85e203d21fce88ef9ea036d2 Mon Sep 17 00:00:00 2001 From: Nathan Straz Date: Fri, 30 Aug 2013 14:40:17 -0400 Subject: Clean up memory leaks on send --- qacp.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) (limited to 'qacp.c') diff --git a/qacp.c b/qacp.c index 54474cf..0c23f7e 100644 --- a/qacp.c +++ b/qacp.c @@ -125,7 +125,6 @@ qacp_sendonefile(const char *host, const char *srcfile, const char *destfile) { struct qa_packet *qp; int fd; - int remfd; ssize_t nbytes; off_t offset; struct stat sb; @@ -160,17 +159,13 @@ qacp_sendonefile(const char *host, const char *srcfile, const char *destfile) /* Await our return code from qarshd */ qp = recv_packet(qacp_fd); if (qp && qp->qp_type == QP_RETURNCODE) { - if (qp->qp_returncode.qp_rc == 0) { - remfd = qp->qp_returncode.qp_errno; - } else if (qp->qp_returncode.qp_rc == -1) { + if (qp->qp_returncode.qp_rc != 0) { fprintf(stderr, "Remote side failed: %s\n", qp->qp_returncode.qp_strerror); - goto sendone_error; - } else { - fprintf(stderr, "Unexpected return code %d\n", - qp->qp_returncode.qp_rc); + qpfree(qp); goto sendone_error; } + qpfree(qp); } else { fprintf(stderr, "Did not receive response to recvfile\n"); goto sendone_failure; @@ -183,7 +178,7 @@ qacp_sendonefile(const char *host, const char *srcfile, const char *destfile) fprintf(stderr, "read() error: %s\n", strerror(errno)); qp = make_qp_returncode(-1, errno, strerror(errno)); } else { - qp = make_qp_data(remfd, offset, nbytes, buf); + qp = make_qp_data(0, offset, nbytes, buf); } send_packet(qacp_fd, qp); offset += nbytes; @@ -592,6 +587,7 @@ sendfiles(char **argv, int argc, int fileidx, short recursive) free(rstatp); } + free(freeme); free(ruser); free(rmtpath); -- cgit