Quellcode durchsuchen

Bug 1587: When parsing MLSD listing, file name was incorrectly tried to be interpreted against various rare part syntaxes, leading to wrong name being displayed

https://winscp.net/tracker/1587
(cherry picked from commit c5c0ff6d0bfade1a8c28cf6522411cbcf9e4ee7f)

Source commit: dbb068705904275710118bfbace73d7641d155f5
Martin Prikryl vor 8 Jahren
Ursprung
Commit
85fe5747a8
1 geänderte Dateien mit 8 neuen und 4 gelöschten Zeilen
  1. 8 4
      source/filezilla/FtpListResult.cpp

+ 8 - 4
source/filezilla/FtpListResult.cpp

@@ -1456,11 +1456,15 @@ BOOL CFtpListResult::parseAsMlsd(const char *line, const int linelen, t_director
   pos++;
   CString fileName;
   copyStr(fileName, 0, line + pos, linelen - pos, true);
-  CServerPath path(fileName, false); // do not trim
-  direntry.name = path.GetLastSegment();
-  if (direntry.name.IsEmpty())
+  if (mlst)
   {
-    direntry.name = fileName;
+    // do not try to detect path type, assume a standart *nix syntax + do not trim
+    CServerPath path(fileName, FZ_SERVERTYPE_FTP, false);
+    direntry.name = path.GetLastSegment();
+    if (direntry.name.IsEmpty())
+    {
+      direntry.name = fileName;
+    }
   }
   return TRUE;
 }