[wp-trac] [WordPress Trac] #51170: FTP automatic updates are not RFC 959 compliant for NLST command
WordPress Trac
noreply at wordpress.org
Thu Mar 31 15:37:47 UTC 2022
#51170: FTP automatic updates are not RFC 959 compliant for NLST command
----------------------------+-----------------------
Reporter: giox069 | Owner: afragen
Type: defect (bug) | Status: assigned
Priority: normal | Milestone: 6.0
Component: Filesystem API | Version: 3.7
Severity: normal | Resolution:
Keywords: has-patch | Focuses:
----------------------------+-----------------------
Comment (by costdev):
[https://github.com/WordPress/wordpress-develop/pull/2460 PR 2460] has now
been tested using vsftpd, Filezilla server and PureFTP.
In all three cases, the PR returns the expected results:
||= **Test** =||= **Result** =||
|| A directory that exists || true ||
|| An empty hidden file || true ||
|| A non-empty hidden file || true ||
|| An empty file || true ||
|| A non-empty file || true ||
|| A directory that does not exist || false ||
|| A file that does not exist || false ||
If passed a directory path, the PR uses the relative `::is_dir()` method
to check for an existing directory.
- If this passes, it returns `true` for an existing directory.
- If it fails, it uses `ftp_rawlist()` to check for a file.
When using `ftp_rawlist()` on a path that doesn't exist, some FTP servers
will return `false`, others will return an empty array. The PR uses a
falsy check to cover both of these instances.
-----
`ftp_rawlist()` uses the FTP "LIST" command. Per RFC 959:
This command causes a list to be sent from the server to the passive DTP.
If the pathname specifies a directory or other group of files, the server
should transfer a list of files in the specified directory. **If the
pathname specifies a file then the server should send current information
on the file**.
(my emphasis)
`ftp_rawlist()` is called without passing the `-a` flag, used to include
hidden files, which had caused issues in attempts to patch this issue in
previous tickets. In testing, it became apparent that Filezilla Server
doesn't support adding the flag, and already shows hidden files.
-----
After successful testing using three different pieces of FTP server
software, on both the `WP_Filesystem_FTPext` and
`WP_Filesystem_ftpsockets` filesystem methods, this looks ready for
`commit` to me.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/51170#comment:23>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list