diff --git a/backport-fill-verify_fn-in-case-of-cd-error-fix-650.patch b/backport-fill-verify_fn-in-case-of-cd-error-fix-650.patch new file mode 100644 index 0000000000000000000000000000000000000000..05c09e6d9fdd235c73d1b27d45ca447b7c9c64f6 --- /dev/null +++ b/backport-fill-verify_fn-in-case-of-cd-error-fix-650.patch @@ -0,0 +1,81 @@ +From 0ead378c8a19d4c7b86e35265a7f6e878fd63c0d Mon Sep 17 00:00:00 2001 +From: "Alexander V. Lukyanov" +Date: Wed, 20 Apr 2022 23:32:37 +0300 +Subject: [PATCH] fill verify_fn in case of cd error; fix #650 + +--- + src/GetFileInfo.cc | 30 +++++++++++++++++++----------- + src/GetFileInfo.h | 2 ++ + 2 files changed, 21 insertions(+), 11 deletions(-) + +diff --git a/src/GetFileInfo.cc b/src/GetFileInfo.cc +index 7afb3d8f..b553544c 100644 +--- a/src/GetFileInfo.cc ++++ b/src/GetFileInfo.cc +@@ -114,6 +114,22 @@ void GetFileInfo::PrepareToDie() + } + } + ++void GetFileInfo::MakeVerifyFileName() ++{ ++ /* Here we should have the home directory path. Find out ++ * the real name of the path. (We may have something like "~/..".) */ ++ ++ FileAccess::Path pwd(session->GetCwd()); ++ ++ session->SetCwd(origdir); ++ session->Chdir(dir, false); ++ ++ verify_fn.set(basename_ptr(session->GetCwd())); ++ ++ /* go back */ ++ session->SetCwd(pwd); ++} ++ + int GetFileInfo::Do() + { + int res; +@@ -241,6 +257,8 @@ int GetFileInfo::Do() + if(!saved_error_text) + saved_error_text.set(session->StrError(res)); + session->Close(); ++ if(!verify_fn) ++ MakeVerifyFileName(); + if(res==FA::NO_FILE) + { + /* If this is a CWD to the parent, and it failed, we +@@ -262,17 +280,7 @@ int GetFileInfo::Do() + /* Now that we've connected, we should have the home directory path. Find out + * the real name of the path. (We may have something like "~/..".) */ + if(!verify_fn) +- { +- FileAccess::Path pwd(session->GetCwd()); +- +- session->SetCwd(origdir); +- session->Chdir(dir, false); +- +- verify_fn.set(basename_ptr(session->GetCwd())); +- +- /* go back */ +- session->SetCwd(pwd); +- } ++ MakeVerifyFileName(); + + /* Special case: looking up "/". Make a phony entry. */ + if(showdir && !strcmp(verify_fn, "/")) +diff --git a/src/GetFileInfo.h b/src/GetFileInfo.h +index 1ac8f4d2..483dcc33 100644 +--- a/src/GetFileInfo.h ++++ b/src/GetFileInfo.h +@@ -66,6 +66,8 @@ class GetFileInfo : public ListInfo + + void PrepareToDie(); + ++ void MakeVerifyFileName(); ++ + public: + GetFileInfo(const FileAccessRef& a, const char *path, bool showdir); + virtual ~GetFileInfo(); +-- +2.15.1.windows.2 + diff --git a/lftp.spec b/lftp.spec index f42e5479fa7b6036368dccf2aa611237444b66ee..fdb285df4381b938b95714a458e3da997d1bffb9 100644 --- a/lftp.spec +++ b/lftp.spec @@ -1,7 +1,7 @@ Summary: A sophisticated file transfer program Name: lftp Version: 4.9.2 -Release: 2 +Release: 3 License: GPLv3+ URL: http://lftp.yar.ru/ Source0: http://lftp.yar.ru/ftp/%{name}-%{version}.tar.xz @@ -11,6 +11,7 @@ BuildRequires: chrpath Patch0: lftp-4.0.9-date_fmt.patch Patch1: Quit-while-source-file-increased.patch +Patch2: backport-fill-verify_fn-in-case-of-cd-error-fix-650.patch %description LFTP is a sophisticated file transfer program supporting a number of @@ -84,6 +85,12 @@ echo "%{_libdir}/lftp/%{version}" > %{buildroot}/etc/ld.so.conf.d/%{name}-%{_arc %changelog +* Thu Jul 14 2022 rimsky <349157738@qq.com> - 4.9.2-3 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC: fill verify_fn in case of cd error fix 650 + * Thu Oct 28 2021 zhouyihang - 4.9.2-2 - Type:bugfix - ID:NA