From e99bb8bfc8d2c1a47b6ae90ef43683d191c30f66 Mon Sep 17 00:00:00 2001 From: simon Date: Thu, 11 Jul 2013 17:24:44 +0000 Subject: [PATCH] Fix a couple of code paths on which, if fxp_readdir returned an error, we would return without first closing the directory handle we had used as an argument. git-svn-id: svn://svn.tartarus.org/sgt/putty@9913 cda61777-01e9-0310-a592-d414129be87e --- pscp.c | 5 +++++ psftp.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/pscp.c b/pscp.c index 0dbe1e34..4c6aba73 100644 --- a/pscp.c +++ b/pscp.c @@ -1348,6 +1348,11 @@ int scp_get_sink_action(struct scp_sink_action *act) break; tell_user(stderr, "scp: reading directory %s: %s\n", fname, fxp_error()); + + req = fxp_close_send(dirhandle); + pktin = sftp_wait_for_reply(req); + fxp_close_recv(pktin, req); + if (must_free_fname) sfree(fname); sfree(ournames); errs++; diff --git a/psftp.c b/psftp.c index 65d0dc50..26f24f9c 100644 --- a/psftp.c +++ b/psftp.c @@ -291,6 +291,11 @@ int sftp_get_file(char *fname, char *outfname, int recurse, int restart) if (fxp_error_type() == SSH_FX_EOF) break; printf("%s: reading directory: %s\n", fname, fxp_error()); + + req = fxp_close_send(dirhandle); + pktin = sftp_wait_for_reply(req); + fxp_close_recv(pktin, req); + sfree(ournames); return 0; } -- 2.11.0