pure-ftpd 1.0.43 wildcard operation fails

This document (7023952) is provided subject to the disclaimer at the end of this document.

Environment

SUSE Linux Enterprise Server 11 Service Pack 4 (SLES 11 SP4)

Situation

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
ftp>
 

Resolution

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. 

Cause

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.

Additional Information

If the same symptoms are experienced when using OES FTP (rather than SUSE's pure-ftpd) see TID 7024033.

Disclaimer

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.

  • Document ID:7023952
  • Creation Date: 18-Jun-2019
  • Modified Date:03-Mar-2020
    • SUSE Linux Enterprise Server

< Back to Support Search

For questions or concerns with the SUSE Knowledgebase please contact: tidfeedback@suse.com

SUSE Support Forums

Get your questions answered by experienced Sys Ops or interact with other SUSE community experts.

Join Our Community

Support Resources

Learn how to get the most from the technical support you receive with your SUSE Subscription, Premium Support, Academic Program, or Partner Program.


SUSE Customer Support Quick Reference Guide SUSE Technical Support Handbook Update Advisories
Support FAQ

Open an Incident

Open an incident with SUSE Technical Support, manage your subscriptions, download patches, or manage user access.

Go to Customer Center