From a580c22c2419a9236466ca8ee80bc97bc9da41eb Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Wed, 20 Jun 2012 17:39:32 +0000 Subject: [PATCH] John Hartnup reports that Apache SSHD's SFTP server responds to FXP_READDIR on an empty directory by returning a zero-length list of filenames, instead of the more common response of a list containing just "." and "..". Stop PSFTP failing an assertion when that happens. [originally from svn r9569] --- psftp.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/psftp.c b/psftp.c index d7b73812..482d66ee 100644 --- a/psftp.c +++ b/psftp.c @@ -830,7 +830,17 @@ char *sftp_wildcard_get_filename(SftpWildcardMatcher *swcm) printf("%s: reading directory: %s\n", swcm->prefix, fxp_error()); return NULL; - } + } else if (swcm->names->nnames == 0) { + /* + * Another failure mode which we treat as EOF is if + * the server reports success from FXP_READDIR but + * returns no actual names. This is unusual, since + * from most servers you'd expect at least "." and + * "..", but there's nothing forbidding a server from + * omitting those if it wants to. + */ + return NULL; + } swcm->namepos = 0; }