mirror of
https://github.com/wiiu-env/ftpiiu_plugin.git
synced 2024-11-26 22:54:16 +01:00
The test for additional switches to the LIST command
must be performed before the path is joined. Otherwise, the path will never be empty and the test will be skipped. Fixes ENODEV error (FTP/550) on clients using "LIST -a".
This commit is contained in:
parent
00191956b8
commit
57362f4b52
@ -1230,26 +1230,27 @@ void FtpSession::xferDir (char const *const args_, XferDirMode const mode_, bool
|
||||
if (std::strlen (args_) > 0)
|
||||
{
|
||||
// an argument was provided
|
||||
|
||||
// work around broken clients that think LIST -a/-l is valid
|
||||
if (workaround_)
|
||||
{
|
||||
if (args_[0] == '-' && (args_[1] == 'a' || args_[1] == 'l'))
|
||||
{
|
||||
char const *args = &args_[2];
|
||||
if (*args == '\0' || *args == ' ')
|
||||
{
|
||||
if (*args == ' ')
|
||||
++args;
|
||||
|
||||
xferDir (args, mode_, false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
auto const path = buildResolvedPath (m_cwd, args_);
|
||||
if (path.empty ())
|
||||
{
|
||||
// work around broken clients that think LIST -a/-l is valid
|
||||
if (workaround_)
|
||||
{
|
||||
if (args_[0] == '-' && (args_[1] == 'a' || args_[1] == 'l'))
|
||||
{
|
||||
char const *args = &args_[2];
|
||||
if (*args == '\0' || *args == ' ')
|
||||
{
|
||||
if (*args == ' ')
|
||||
++args;
|
||||
|
||||
xferDir (args, mode_, false);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sendResponse ("550 %s\r\n", std::strerror (errno));
|
||||
setState (State::COMMAND, true, true);
|
||||
return;
|
||||
|
Loading…
Reference in New Issue
Block a user