SUSE Linux Enterprise Server 11 Service Pack 4 (SLES 11 SP4)
After updating from pure-ftpd 1.0.22 to 1.0.43 (through maintenance updates in the SUSE update channel), wildcard operations may fail.
Wildcard operations center around directory listings, but this may not always be obvious because some client operations such as a multiple get (mget) will do directory listings behind the scenes.
An example of the failure is a follows:
ftp> ls *
229 Extended Passive mode OK (|||30087|)
150 Accepted data connection
226-Out of memory during globbing of *
226-(This probably means "Permission denied")
226-Options: -a -l
226 0 matches total
There are various options to resolve this:
1. Customers with SLES 11 SP4 LTSS contracts can update their pure-ftpd package to version 1.0.43-30.5 or higher.
That updated version increases the default size of a memory buffer (used to hold glob results) from 64K to 512K. In most cases, merely updating the package will be enough, and no configuration change would be needed.
For more extreme cases, the size of that buffer has also been made configurable, and can be controlled as a 3rd value on the -L parameter, also known as the "LimitRecursion" setting in /etc/pure-ftpd/pure-ftpd.conf.
For example, in pure-ftpd.conf, the following line would allow up to 10000 directory entry results, traversal of up to 8 subdirectories deep, and a buffer size of 1024K.
LimitRecursion 10000 8 1024
Note that the size of each of these variables is independent of the other, meaning (for example) that the first value may allow for 10000 files, but even so there may not be enough memory buffer to handle that many. Please insure that BOTH values are appropriate for your needs.
2. Customers without an LTSS contract have these options:
a. Revert to a 1.0.22 version of pure-ftpd. This can be done within yast2 --> software management. Search on "pure-ftpd". Once found and selected, use the "Versions" tab to select the previous version which is desired. The click "accept". Packages can optionally be locked to prevent them from being updated in the future. The command for this would be: zypper al pure-ftpd
b. Directory sizes can be kept smaller to avoid the issue.
c. Naming conventions or wildcard specifications can be made more diverse to decrease the number of files which would match the particular wildcard specifications.
Between pure-ftpd 1.0.22 and 1.0.43, the globbing code was synced with OpenBSD-current (at the time). That code had a memory buffer of 64K. The result was that pure-ftpd could not handle as many wildcard results as previously allowed.
If the same symptoms are experienced when using OES FTP (rather than SUSE's pure-ftpd) see TID 7024033.
This Support Knowledgebase provides a valuable tool for SUSE customers and parties interested in our products and solutions to acquire information, ideas and learn from one another. Materials are provided for informational, personal or non-commercial use within your organization and are presented "AS IS" WITHOUT WARRANTY OF ANY KIND.