novell-oes-pure-ftpd 1.0.43 wildcard operation fails

  • 7024033
  • 25-Jul-2019
  • 22-Aug-2019

Environment

Open Enterprise Server 2015 (OES 2015) Linux Support Pack 1
Open Enterprise Server 2018 (OES 2018) Linux
Open Enterprise Server 2018 (OES 2018) Linux Support Pack 1

Situation

While using novell-oes-pure-ftpd (also known as Novell FTP or OES FTP) 1.0.43, 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

An update has been made to increase the memory buffer (used to hold glob results) from 64K to 512K.
 
The updated versions are:
 
From the OES 2015.1 update repository, update to novell-oes-pure-ftpd 1.0.43-19.4 or higher.
 
From the OES 2018 update repository, update to novell-oes-pure-ftpd 1.0.43-103.7 or higher.
 
From the OES 2018.1 update repository, update to novell-oes-pure-ftpd 1.0.43-11.4 or higher.
 
[Sidenote:  One may notice that OES 2018.1 is using a lower version number pattern for novell-oes-pure-ftpd than was contained in previous OES versions.  Even so, a proper upgrade from a previous OES release to OES 2018.1 should result in the "newer but lower" version being in place.  Therefore, when the maintenance update above is applied, it will go on correctly.]
 
In most cases, merely updating the package will be enough, because the new default buffer size is significantly larger.  Therefore, in most cases, 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 an optional 3rd value on the -L parameter, also known as the "LimitRecursion" setting in /etc/pure-ftpd/pure-ftpd.conf.
 
For example, in /etc/pure-ftpd/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 the needs of the directories in question.

Cause

At some point between pure-ftpd versions 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 novell-oes-pure-ftpd could not handle as many wildcard results as previously allowed.

Additional Information

For the same concern on SLES 11 SP4 with pure-ftpd package (but not OES), see TID 7023952