X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=psftp.c;h=f77a88ed78c33bedd6092e64e315c4289bc12e1a;hb=12e019bafc75cb441e965c63e15dfceeaf71ca1e;hp=db3ae7f51d0ac0b58354990cb1095b10ddb197bb;hpb=5765f8ceb923359085cdbdb6eea3b58c8ae9484d;p=PuTTY.git diff --git a/psftp.c b/psftp.c index db3ae7f5..f77a88ed 100644 --- a/psftp.c +++ b/psftp.c @@ -128,8 +128,12 @@ char *canonify(char *name) assert(rreq == req); canonname = fxp_realpath_recv(pktin, rreq); - if (!canonname) - return fullname; /* even that failed; give up */ + if (!canonname) { + /* Even that failed. Restore our best guess at the + * constructed filename and give up */ + fullname[i] = '/'; /* restore slash and last component */ + return fullname; + } /* * We have a canonical name for all but the last path @@ -952,7 +956,7 @@ int sftp_cmd_close(struct sftp_command *cmd) return 0; } - if (back != NULL && back->socket(backhandle) != NULL) { + if (back != NULL && back->connected(backhandle)) { char ch; back->special(backhandle, TS_EOF); sftp_recvdata(&ch, 1); @@ -2909,7 +2913,7 @@ int psftp_main(int argc, char *argv[]) do_sftp(mode, modeflags, batchfile); - if (back != NULL && back->socket(backhandle) != NULL) { + if (back != NULL && back->connected(backhandle)) { char ch; back->special(backhandle, TS_EOF); sftp_recvdata(&ch, 1);