CHANGES
上传用户:zibowangxu
上传日期:2007-01-04
资源大小:331k
文件大小:110k
源码类别:

Ftp客户端

开发平台:

Unix_Linux

  1.  
  2.   Copyright (c) 1999 WU-FTPD Development Group.  
  3.   All rights reserved.
  4.   
  5.   Portions Copyright (c) 1980, 1985, 1988, 1989, 1990, 1991, 1993, 1994
  6.     The Regents of the University of California.
  7.   Portions Copyright (c) 1993, 1994 Washington University in Saint Louis.
  8.   Portions Copyright (c) 1996, 1998 Berkeley Software Design, Inc.
  9.   Portions Copyright (c) 1989 Massachusetts Institute of Technology.
  10.   Portions Copyright (c) 1998 Sendmail, Inc.
  11.   Portions Copyright (c) 1983, 1995, 1996, 1997 Eric P.  Allman.
  12.   Portions Copyright (c) 1997 Stan Barber.
  13.   Portions Copyright (c) 1997 Kent Landfield.
  14.   Portions Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997
  15.     Free Software Foundation, Inc.  
  16.  
  17.   Use and distribution of this software and its source code are governed 
  18.   by the terms and conditions of the WU-FTPD Software License ("LICENSE").
  19.  
  20.   If you did not receive a copy of the license, it may be obtained online
  21.   at http://www.wu-ftpd.org/license.html.
  22.  
  23.   $Id: CHANGES,v 1.40 1999/10/17 00:50:22 wuftpd Exp $
  24. Changes in 2.6.0: Released 18 Oct, 1999
  25.  o  On sigpipe, always log a lost connection.
  26.  o  Added a log message on attempts to download files marked unretrievable.
  27.  o  The SITE NEWER feature has been disabled.  A compile-time option has been
  28.     added to re-enable it.  See config.h.noac for more information on this.
  29.  o  With restricted-uid/gid, CWD to a non-existant directory would display the
  30.     full pathname rather than just relative to the user's home.  Actually, the
  31.     fix catches most cases where this could occur, not just the CWD verb.
  32.  o  Fixed a bug in the restricted-uid/gid feature which could allow access
  33.     outside the user's home directory in some cases.
  34.  o  Bumped MAXHST (max. hosts allowed on a line) for ftphosts from 10 to 12.
  35.     Fixed a bug related to this which can cause the server to crash checking
  36.     host access.
  37.  o  The internal ls (see below) was judged to be unready.  It has been disabled
  38.     by default but can be enabled with a compile-time option for those who wish
  39.     to attempt to debug it (be warned, it has a lot of problems).
  40.  o  Split the "bad shell or user not in ftpusers" syslog message into two
  41.     messages to prevent confusion.
  42.  o  Filename globs for LIST, NLST and SITE EXEC, as well as a few internal
  43.     uses, are cleaned up before processing.  For example: */./../* becomes
  44.     just *.  This prevents certain memory starvation DoS attacks.
  45.  o  Corrections for RFC compliance can break some clients.  If possible, the
  46.     broken client should be updated, but a compile-time option has been
  47.     added.  See the config.h.noac for more information on this.
  48.  o  Created doc/HOWTO directory and moved VIRTUAL.FTP.SUPPORT and 
  49.     upload.configuration.HOWTO there.
  50.  o  Add a README.AUTOCONF file describing the autoconf build in detail.
  51.  o  UC, Berkeley, has removed the requirement that all advertising material
  52.     must include credit to them.  Removed the clause from the LICENSE and
  53.     the historical licenses in the COPYRIGHT file.
  54.  o  Added the email-on-upload feature from BeroFTPD.  See the ftpaccess man
  55.     page for defaults on these added ftpaccess clauses:
  56.         mailserver <hostname>
  57.         incmail <emailaddress>
  58.         mailfrom <emailaddress>
  59.         virtual <address> incmail <emailaddress>
  60.         virtual <address> mailfrom <emailaddress>
  61.         defaultserver incmail <emailaddress>
  62.         defaultserver mailfrom <emailaddress>
  63.  o  Redhat added the -I option to disable RFC931 (AUTH/ident).  Added to
  64.     the baseline so Redhat users don't see a loss of a feature.  Setting
  65.     the timeout for rfc931 to zero will do the same thing in the ftpaccess
  66.     file.
  67.  o  The test for whether restricted-uid/restricted-gid applied should have
  68.     been done before the chroot so it used the system /etc/passwd and
  69.     /etc/group files.
  70.  o  CDUP when you were already at the home directory, would complain about
  71.     you being restricted (if you were).  Instead it should give a positive
  72.     reply, and do nothing.  This makes it behave more like CDUP when you're
  73.     not restricted to your home directory.
  74.  o  deny-uid and deny-gid were being tested for anonymous users.  Bad move,
  75.     it's too easy to forget to allow them.  Use 'defaultserver private' to
  76.     keep anonymous users away.
  77.  o  Correct the operation of the NLST command.  Finally.  mget should now
  78.     work as users expect it to.
  79.  o  Prevent buffer overruns when processing message files.
  80.  o  Correct a reference through a NULL pointer when doing S/Key
  81.     authentication and the user is not in the passwd file.
  82.  o  Check the return code from select() when setting up a data connection.
  83.     Under some rare conditions it is possible that the select was called
  84.     for an fd_set which has no members, hanging the daemon.
  85.  o  Ensure a pattern of "*" matches everything.  The new path_compare (used
  86.     on upload and throughput clauses in the ftpaccess file) sets the option
  87.     FNM_PATHNAME, so:
  88.         *    matches everything
  89.         /*   matches everything
  90.         /*/* matches /dogs/toto and /dogs/toto/photos but not /dogs
  91.  o  setproctitle() support added for UnixWare.
  92.  o  Removed all FIXES files.  Merged their contents into this CHANGES file
  93.     (the one you're reading now).  The old doc/FIXES directory has been
  94.     tar'd and will be placed in the attic when 2.6.0 releases.
  95.  o  Corrected an error in the MAPPING_CHDIR feature which could be used to
  96.     gain root privileges on the server.
  97.  o  Added -V command-line option to View the copyright and exit.
  98.  o  Added the privatepw command and documentation.
  99.  o  Port for FreeBSD corrected.
  100.  o  Adding the LICENSE file to the baseline.
  101.  o  Added print_copyright function so our copyright is embedded in the
  102.     executables.
  103.  o  WU-FTPD Development Group copyright headers added.  Original Copyright
  104.     headers moved into the COPYRIGHT file.
  105.  o  RCS Ids from 2.4.x removed and new templates added for wu-ftpd.org
  106.     usage.
  107.  o  Make sure the signal context is restored when jumping out of signal
  108.     handlers.  This was causing signal 11 on some systems.
  109.  o  Cleaned up the how-to of setting up virtual hosting support.
  110.  o  Corrected header file dependencies.
  111.  o  Changed NLST to nlst, necessary as ftpcmd.c #defines NLST.
  112.  o  Tidied up virtual variables.
  113.  o  Changed so compiles cleanly on SCO OpenServer 5, UnixWare 2 and
  114.     UnixWare 7.
  115.  o  Anonymous users could get in even though no class was defined for them.
  116.  o  Support for non-ANSI/ISO compilers has been removed.  You MUST have and
  117.     ANSI/ISO C compiler.  This has been true for some time, all that has
  118.     changed is the (incomplete) support for older (K&R) compilers has been
  119.     removed.
  120.  o  Added Kent Landfield's NEWVIRT scheme for extensive virutal hosting.
  121.     See the updated documentation on virtual hosting for details.
  122.  o  ftprestart has been added to the base daemon kit.
  123.  o  A buffer overrun in the ftpshut command has been corrected.  Since, on
  124.     most sites, the ftpshut command is only usable by the superuser, this
  125.     is not considered a security issue.  If you have installed ftpshut with
  126.     suid-root permissions (not the default), then there is the possibility
  127.     this overrun could be used to leverage root permissions.
  128.  o  Several new ftpaccess clauses have been added.  These allow control of
  129.     the various timeouts used within the daemon.  The new clauses are:
  130.         timeout accept <seconds>
  131.         timeout connect <seconds>
  132.         timeout data <seconds>
  133.         timeout idle <seconds>
  134.         timeout maxidle <seconds>
  135.         timeout RFC931 <seconds>
  136.  o  Myriad places where inactivity timeouts were not being properly
  137.     detected or handled have been corrected.
  138. The built-in directory listings, both the original NLST and the
  139. build-in LIST (ls), now detect inactivity.  The original NLST did
  140.         not which could lead to hanging daemons.
  141. C FILE handles for data connections are now always flushed, then
  142.         the socket is shutdown cleanly before being closed.
  143. As a side effect, the daemon now more often properly detects
  144. incomplete transfers.  This can lead, though, to the xferlog
  145. showing the correct byte count (meaning the daemon read or wrote
  146. that many bytes over the data connection), but still log the
  147. transfer as incomplete (meaning the socket did not properly
  148.         shutdown so the client probably missed some data).
  149.  o  The daemon no longer attempts to replace the system's <arpa/ftp.h>
  150.     header when compiling.  Instead, it uses its own local copy at all
  151.     times.
  152.  o  The daemon will now wait for the transfer to complete before sending
  153.     'Transfer complete' or similar messages.  This improves the daemon's
  154.     reliability for poorly written clients which take recipt of the message
  155.     as indication the transfer has completed rather than reading until the
  156.     connection closes.
  157.  o  Guest and anonymous logout was not recorded on Linux.  Removed call to
  158.     updwtmp and returned to old method of updating the lastlog.
  159.  o  Script "vr.sh" is no longer needed.  The Development Group will not be
  160.     releasing patches to upgrade; they can be obtained from CVS if needed.
  161.  o  "realpath_on_steroids" is no longer needed.  Removed.
  162.  o  Use a custom version of fnmatch() which changes the rules for matching
  163.     file and directory names.  The most visible result of this is
  164.     noretrieve and allow-retrieve are now much more flexible.  See the
  165.     ftpaccess manpage for examples.
  166.  o  Use the correct SPT_TYPE for FreeBSD 2.0 or later.
  167.  o  Correct the class= logic on the allow-retrieve clause.
  168.  o  Enhanced DNS extensions.  This adds three ftpaccess clauses:
  169.         dns refuse_mismatch <filename> [override]
  170.         dns refuse_no_reverse <filename> [override]
  171.         dns resolveroptions [options]
  172.  o  Corrected a reference in the manpage for ftpconversions to ftpd.
  173.  o  The string 'path-filter' is now used in the system logs to describe
  174.     problems resulting from failing a path-filter check.  The daemon used
  175.     to just say 'bad filename' which was misleading to some people.
  176.  o  Added instruction on how to support PAM on Solaris.  Right now this
  177.     means hand editing src/config/config.sol and
  178.     src/makefiles/Makefile.sol.
  179.  o  Checking that all platforms use config.h, src/config/config.isc was
  180.     found to have forgotten to include the file.
  181.  o  A security deficency on SunOS 4.1, not having a working getcwd()
  182.     function, has been corrected by using the provided function.
  183.     Compilation bugs in the portable getcwd() function have been corrected.
  184.  o  The daemon will no longer hang attempting to close the RFC931 socket
  185.     when the remote end is firewalled and does not respond to traffic for
  186.     this protocol.  This was determined to be inappropriate handling of
  187.     SIGALRM; handling for this signal has been cleaned up throughout the
  188.     daemon.
  189.  o  The daemon may now be built using GNU autoconf.  This is in the early
  190.     stages and not all platforms may be supported.  The old build system
  191.     will be maintained for at least the 2.6.0 release; until the major
  192.     platforms are all known to be supported.
  193.  o  Two new ftpaccess clauses have been added.  These allows the site admin
  194.     to selectively allow PORT and PASV data connections where the remote IP
  195.     address does not match the remote IP address on the control connection.
  196.     The new clauses are:
  197.         port-allow <class> [<addrglob> ...]
  198.         pasv-allow <class> [<addrglob> ...]
  199.  o  The daemon now includes an internal 'ls' command.
  200.  o  Ported to Mac OS/X.
  201.  0  Added (limited) support for AFS and DCE user authentication.  This is
  202.     only know to work on AIX, and needs porting to other platforms.  For
  203.     now, this requires hand work to enable.
  204.  o  Added an ftpaccess clause to enable TCP keepalives.  This clause is:
  205.         keepalive <yes|no>
  206.  o  You can now specify the xferlog filename for the default server just as
  207.     you can for the virtual hosts; in the ftpaccess file.  The new clause
  208.     is:
  209.         xferlog <absolute path>
  210.  o  ftpaccess manpage cleaned up.  Many typos corrected, some techincal
  211.     changes.  Indentation should now be correct.
  212.  o  Apache's .indent.pro to the src and support directories.  Ran all *.c
  213.     and *.h files through it.  ftpcmd.y has been indented by hand.  The
  214.     code is now a lot more readable!
  215.  o  A bug in the parsing for the deny !nameserved ftpaccess clause has been
  216.     corrected.
  217.  o  Technical corrections in the ftpd manpage.
  218.  o  Add util/recompress.c as a more generic version of gzip2cmp.c
  219. ###########################################################################
  220. Changes in 2.5.0: Released 25 May, 1999
  221.  o  Change the handling of wtmp for GNU libc to use the Os-provided
  222.     function updwtmp().
  223.  o  Prevent some buffer overruns.
  224.  o  Fix permissions on some files installed by RPM, add the log rotation
  225.     control file.
  226.  o  Change the seteuid() calls for fchown() and chown() for POSIXLY_CORRECT
  227.     systems.
  228.  o  pid file locking in ftpcount (ftpwho) is now consistent with the way
  229.     the daemon locks these files.
  230.  o  Cancel any pending alarm request to stop acl_remove() from being
  231.     interrupted then called again via the SIGALRM handler, this should fix
  232.     the flock on a bad file descriptor looping problem.
  233.  o  Use %m in syslog format strings in place of %s and strerror(), this
  234.     simplifies #ifdefs.
  235.  o  For SCO, link ftpcount with libsocket, necessary as it now calls
  236.     syslog().
  237.  o  Added Redhat's RPM SPEC file for building RPMs.
  238.  o  English corrections in ftpaccess manpage.  Technical correction: the
  239.     noretrieve/allow-retrieve clauses do NOT support regular expressions.
  240.  o  Move where ftpglob stuff is defined to avoid compilation errors on some
  241.     systems.
  242.  o  Port to SGI Irix version 4 corrected.
  243.  o  Overwrite behavior on uploads has been made consistent with shell
  244.     usage.  The daemon does not change ownership or permissions on
  245.     overwrite.
  246.  o  Corrected the PASV command to bind to the correct interface (local IP
  247.     address).
  248.  o  Removed the OVERWRITE and UPLOAD defines from platform config files;
  249.     they are defined in the main config.h header.
  250.  o  Issuing CWD without any parameters caused a signal 11, crashing the
  251.     daemon.
  252.  o  Port to HP/UX corrected.
  253.  o  Added ERRATA file to discuss problems with getcwd().
  254.  o  Added a portable version of the getcwd() function for systems which do
  255.     not have it or imcorrectly implement it.  NextStep 3 uses this new
  256.     function.
  257.  o  OPIE support was being disabled even though the proper command-line
  258.     switches were being set.  Corrected the use of opieverify().
  259.  o  The fatal() function was not declared void; this was causing problems
  260.     with some compilers.
  261.  o  Port to Hitachi HI-UX corrected.
  262.  o  Some calls to fnmatch() were missing parameters.
  263.  o  Corrected the 'restricted' user feature.  It now works well with most
  264.     FTP clients.
  265.  o  Correct usage of -d vs -e in the install Makefile for a number of
  266.     platforms.
  267.  o  You can now use negated hostnames/addresses on the class ftpaccess
  268.     clause.
  269.  o  Added an ftpaccess clause to specify random text for the initial
  270.     greeting:
  271.         greeting text <message>
  272.  o  Corrected password encryption/checking for Digital Unix with C2
  273.     security (SECUREOSF).
  274.  o  Merged the TODO file from the VR series with Stan's TODO file for the
  275.     Academ betas.
  276.  o  Changed the various permission denial messages sent by the daemon to
  277.     the client to make it clear the message originated from the server.
  278.  o  Ports to SCO, Solaris, uxw, ptx and isc corrected.
  279.  o  Use the newer SEEK_ defines in place of the old BSD L_ defines and
  280.     removed the global definition of entry, each function should define it
  281.     locally.
  282.  o  Removed an unnecessary lseek(L_SET) in ftpcount (ftpwho).
  283.  o  Link ftpcount and ftpshut with ${XXLIBS}.
  284.  o  Made strsep() definition consistent with BSD and Linux.  Add strsep()
  285.     definition to conversions.c.
  286.  o  Added #include <string.h> to ckconfig.c.
  287.  o  Replaced the _PATH_DEVNULL define with a #include of "pathnames.h" in
  288.     popen.c.
  289.  o  Support long group access passwords if SecureWare or HPUX_10_TRUSTED
  290.     are defined (using bigcrypt()).
  291.  o  Fixed a memory leak in restrict.c.
  292.  o  Digital Unix version 4 has a working getcwd(); use it instead of
  293.     getwd().
  294.  o  Stop restrict_list_check() from walking off the end of name.
  295.  o  Added -x command-line option to mean 'log syslog+xferlog'.
  296.  o  Changed the log ftpaccess clause to allow logging transfers to both the
  297.     syslog and xferlog.  The log ftpaccess clauses now include:
  298.         log syslog
  299.         log xferlog
  300.         log syslog+xferlog
  301.  o  Formation of the WU-FTPD Development Group on 1 April, 1999.
  302.     2.4.2-VR17 chosen as initial baseline for the daemon.
  303. ###########################################################################
  304. Changes in 2.4.2-VR17: Released 1 April, 1999
  305.  o  Gregory A Lundberg resigns as the de-facto maintainer of WU-FTPD.  "And
  306.     you thought I was joking."
  307.  o  VIRTUAL is now the default for Solaris; all Solaris systems support
  308.     multiple interfaces (IP addresses).
  309.  o  Fixed complaints involving virtual_len reported by several beta
  310.     testers.
  311.  o  Some of the 'C' source code in ftpcmd.y depended upon a particular
  312.     behavior when ANSI/ISO does not define it.  Corrected so all compilers
  313.     will properly interpret the code.
  314.  o  Corrected the support for QUOTA on Solaris.
  315.  o  The GNU EGCS 'C' compiler is broken.  A quick check and we can avoid
  316.     the brokenness.
  317.  o  Port to Ultrix corrected.
  318.  o  The default shell on NextStep wants -d instead of -e.  Changed to test
  319.     instead of [] since that's more portable; will probably do the same to
  320.     other systems in a future release.
  321.  o  MNTMAXSTR was possibly undefined on Digital Unix 4.0 even when not
  322.     using QUOTA_DEVICE, causing compilation errors.
  323.  o  Added daemonaddress to the ftpaccess manpage.
  324.  o  Added a note from Chad Price <cprice@molbio.unmc.edu> in src/logwtmp.c
  325.     about the brokenness of Solaris' last command.
  326.  o  It turns out that not all SunOS 4.1 boxes actually have a getcwd()
  327.     function.
  328.  o  The labels unix and __unix__ are depricated on BSD, effecting the logic
  329.     for the reponse to the SYST command.
  330.  o  Added an appnote about OPIE.  See src/makefiles/Makefile.lnx for a way
  331.     to automatically have the daemon use OPIE.  Send your Makefile if you
  332.     do something similar for your system.
  333.  o  Added an appnote about a problem experienced with Trusted Solaris.
  334.  o  Added doc/misc directory to start collecting interesting tidbits which
  335.     may help people get their servers going.
  336.  o  The FIXES files were really cluttering up the base directory.  Moved
  337.     them to a directory under doc.
  338.  o  The 'log security' ftpaccess clause covered all but a few messages
  339.     about filesystem operations.  It now covers the few it missed.
  340.  o  Under some conditions _PATH_WTMP was not being set in pathnames.h
  341.  o  QUOTA is now supported for Solaris.
  342.  o  Trusted Solaris needed additional functionality in ftpcount (ftpwho).
  343.  o  File locking in ftpcount (ftpwho) was never completed.
  344.  o  Port to HP/UX corrected.
  345.  o  'make install' now accepts DESTDIR to install into a directory
  346.     structure other than the root file system.  A number of other optional
  347.     parameters are available to override the default ownership of the
  348.     installed files.  Missing directories are automatically created.  File
  349.     permisssions were reduced to the minimum necessary.
  350.  o  Dead code removed.
  351.  o  The Makefile for Linux now automatically detects if PAM is installed
  352.     and compiles the daemon to use it.
  353.  o  Fix an uninitialized variable in ftpshut which could effect the way the
  354.     command works with default values.
  355.  o  Suppress trailing blanks from the output of a wide 'ps' in the ftpcount
  356.     (ftpwho) command.  Just making things pretty.
  357.  o  Updated upload.configuration.HOWTO to describe more of the
  358.     configuration having to do with class= rules and overwrite, delete and
  359.     rename clauses.
  360.  o  Added vers.c and edit to 'make cleandir' in the src directory.  These
  361.     files are automatically created during the build process.
  362.  o  Added a restrict_check(".") in the LIST command for consistency with
  363.     the remainder of the code in ftpcmd.y.
  364.  o  Corrected the 'restricted' users feature so it would play nicely with
  365.     web clients and the way some of them mis-interpret FTP URLs.
  366. ###########################################################################
  367. Changes in 2.4.2-VR16: Released 4 March, 1999
  368.  o  The Makefile for hiu had a typo and would not install two manpages.
  369.  o  Merged 2.4.2-BETA-18-VR15 with 2.4.2 (final) from Academ.  Gotta love
  370.     CVS. :)
  371.  o  Gregory A Lundberg becomes the de-facto maintainer of WU-FTPD pending
  372.     the formation of the WU-FTPD Development Group.
  373. ###########################################################################
  374. Changes in 2.4.2: Released 26 Febraury, 1999 (not announced)
  375.  o  With the release of 2.4.2, Stan Barber steps down as the maintainer of
  376.     WU-FTPD.
  377.  o  Documented that 'upload .. no' allowed directory creation.  See
  378.     doc/examples/ftpaccess.heavy as an example.  [Ed: This is not the case
  379.     for the VR series, but I'm including the change anyway.]
  380.  o  Clarification in the manpage for ftphosts: ftp or anonymous listed in
  381.     the file will disable anonymous ftp access.
  382.  o  Possible pointer overrun in acl.c parsing ftpaccess corrected.
  383.  o  Literal constant in ftpcmd.y changed to static to reduce program size.
  384.  o  ftpcount/ftpwho interpretation of start/stop times made to match the
  385.     way the daemon actually does it.
  386.  o  setproctitle() in ftpd.c updated to avoid a buffer overrun and handle
  387.     low memory conditions; SCO corrections.
  388.  o  Possible buffer overrun parsing 'virtual root' and 'virtual logfile'
  389.     corrected.
  390.  o  A timeout timer was being reset at the wrong point during STOR.
  391.  o  Corrections for Sun/Solaris paths in pathnames.h.
  392.  o  Makefile for DEC/Unix (dec and du4) changed from cc -std1 to cc -std.
  393.  o  Correction in syslog support for DEC/Unix in support/syslog.c.
  394.  o  util/xferstats corrected to parse your local domain name rather than
  395.     just assuming you're academ.com.
  396.  o  Other changes are white-noise or simply for style and do not effect the
  397.     operation of the daemon in any way.
  398. ###########################################################################
  399. Changes in 2.4.2-BETA-18-VR15: Released 1 March, 1999
  400.  o  Provided a means to completely disable anonymous FTP access.  Done as a
  401.     compile-time option, see config.h
  402.  o  NLST with a directory ending with / doubled up the slash.  This had
  403.     been there for years.
  404.  o  Completed large file support for AIX.  To enable Large File support,
  405.     use './build aix LF=YES'
  406.  o  The stock compiler on SunOS 4.1 is breaindead.  Use gcc instead.  Also
  407.     found during trials that getcwd() works fine on s41 and enabled it.
  408.     Found that on a SunOS 4.1 using NFS in the FTP area, fchdir() doesn't
  409.     always work so if you have problems, #define HAS_NO_FCHDIR to see if
  410.     that helps.
  411.  o  Complete the changeover from SCO Unix to SCO OpenServer 5.
  412.  o  We really don't need to #undef NO_PRIVATE twice in config.h .. it just
  413.     confuses things.
  414.  o  The -X command-line option and 'log syslog' were not working as
  415.     documented.  The switch was re-initialized by the 'log' clauses.
  416.  o  Additional corrections for AIX 4.2 and large file support.  Earlier
  417.     versions of AIX may need to edit support/makefiles/Makefile.aix if they
  418.     don't have snprintf() or strdup().
  419.  o  Corrected a case where _PATH_XFERLOG may not be defined at all in
  420.     src/pathnames.h.
  421.  o  Code cleanup for the xferlog print which was changed in VR14.
  422.  o  A typo selected the wrong HELP_CRACKERS patch in one place.
  423.  o  Protect a #define conflict on NetBSD with #ifndef.
  424.  o  The reason the daemon won't work on AIX is the size_t_blksize change
  425.     made as an experiment way-back-when.  Backed out that change.  Let's
  426.     see what happens.
  427.  o  Corrected an error which caused AIX to sometimes report 0 for the
  428.     filesize when a download begins.
  429.  o  There were a number of places there was no check for errors from
  430.     alloc()/malloc()/calloc().
  431.  o  defumask was causing problems on HPUX.  Another case of mis-matched
  432.     definition/extern.
  433.  o  There were several places where int was being used and size_t was
  434.     correct.  This may, or may not, fix problems getting the daemon to work
  435.     on AIX.
  436.  o  Added the ability to restrict users to their home directories.  This
  437.     has the effect of doing a "soft" chroot and is best used with guest
  438.     users.  Several new ftpaccess clauses were added to support this:
  439.         restricted-uid <uid-range> [...]
  440.         restricted-gid <gid-range> [...]
  441.         unrestricted-uid <uid-range> [...]
  442.         unrestricted-gid <gid-range> [...]
  443.  o  Sun forgot to include RAND_MAX in their implementation of
  444.     srand()/rand() on SunOS 4.1.  Choose a (hopefully) correct value.  This
  445.     has dire consequences for PASV port randomization of it's wrong.
  446.  o  The Perl script for xferstats provided with the daemon calls for
  447.     /usr/local/bin/perl when Perl is usually in /usr/bin/perl.  You
  448.     shouldn't be using this script anyway, get Phil's version; it's MUCH
  449.     better.
  450.  o  Corrections to QUOTA support.
  451.  o  OPIE can now use the OPIE access file, allowing some users to user
  452.     password authentication while requiring others to use OPIE.
  453.  o  Wildcards (*) on hostmatch used to work and don't any more.  The were
  454.     removed because the original method was insecure.  Corrected the
  455.     problem and re-instituted this feature without the potential security
  456.     problems of the old method.
  457.  o  /etc is cluttered enough but the config files make it harder than it
  458.     has to be to use /etc/ftpd for the daemon configuration files.  Updated
  459.     config files to test for a value before setting the default.  Look in
  460.     src/makefiles/Makefile.lnx for an example of how to automatically test
  461.     the target for this, or just add -DUSE_ETC_FTPD to COPTS in your
  462.     Makefile.
  463. ###########################################################################
  464. Changes in 2.4.2-BETA-18-VR14: Released 15 February, 1999
  465.  o  The correction for SCO had an effect on Digital Unix with C2 Security
  466.     (SECUREOSF).
  467.  o  Fixed some dumb coding mistakes in realpath.c
  468.  o  Port for NextStep 3.3 corrected.
  469.  o  Fixed a compile error for quotas on Linux; seems Redhat or someone
  470.     forgot to #include a file deep in the OS runtime headers.
  471.  o  Corrections for SecureWare systems so the daemon can build on SCO
  472.     OpenServer 5.
  473.  o  There were points where multiple replies due to realpath() returning an
  474.     error could hang the remote client.  Removed the extra replies.
  475.  o  The size of a buffer used by the *_realpath() functions is BUFSIZ and
  476.     should be MAXPATHLEN.  Actually, this was the case many places in
  477.     extensions.c.
  478.  o  The anti-NOOP code didn't work.  The timer was being restarted too
  479.     often.
  480.  o  The reason debug doesn't work in daemon-mode is it's initialized too
  481.     late.
  482.  o  Back in VR8 I turned off the sleep slowing down password guessers
  483.     because there are times when signals can be off when the sleep occurs
  484.     and that would hang the daemon.  Let's fix that and re-enable the
  485.     sleep.
  486.  o  Still more buffer-overflow points which can cause problems.  This time
  487.     it's in the writing of the xferlog.  Sigh.  This really should be
  488.     rewritten.
  489.  o  Disallow PASV connections from IP addresses different than the control
  490.     connection.  This is not a complete fix, but it will stop connection
  491.     theft where the attacker is on a different machine than the victim-
  492.     client.
  493.  o  There is an old, well-known PASV port race designed into the FTP
  494.     protocol.  To make it harder for this race to succeed, do not depend
  495.     upon the underlying system to randomly choose the PASV port.  The only
  496.     correct solution to this problem is a client-side issue: open the
  497.     connection before issueing the transfer command.
  498. ###########################################################################
  499. Changes in 2.4.2-BETA-18-VR13: Released 1 February, 1999
  500.  o  Added module loadavg.c stripped from Sendmail.  This is not currently
  501.     compiled.  The module is for testing connection limits based upon
  502.     system load, which is planned for a future version of the daemon.
  503.  o  Fixed a bug where access.c was logging garbage because of bad linkage
  504.     to ftpd.c, this appeared on a number of syslog messages instead of the
  505.     remote user identification (via RFC 931).
  506.  o  Added and ftpaccess clause to listen on a single IP address instead of
  507.     INADDR_ANY.  This is incompatible with virtual host support as things
  508.     now stand and will require a major rewrite to fix.  I needed it for a
  509.     specific site and decided to leave it in.  The new clause is:
  510.         daemonaddress <address>
  511.  o  Fixed a bug in the 'connection from' message.  The AUTH (RFC 931) was
  512.     too late and the remote address and host name hadn't been determined
  513.     yet.
  514.  o  Fixed a bug in the quota support which caused a crash if there was no
  515.     file support (/etc/fstab /etc/mtab) on some systems.
  516.  o  Added documentation for class= phrases missed in VR12 and promised for
  517.     this release.
  518.  o  The realpath fix in VR12 for NFS had an off-by-one.
  519. ###########################################################################
  520. Changes in 2.4.2-BETA-18-VR12: Released 1 January, 1999
  521.  o  Added a missing library building for SGI.
  522.  o  Added a few small tweaks for building on NetBSD.
  523.  o  Added a compile-time option to suppress syslog messages about pid locks
  524.     forcing a sleep.
  525.  o  Preload the ftpaccess file before becoming a daemon.  This can have a
  526.     big impact on the performance for busy sites.  It also loads before the
  527.     chroot command-line option so the /etc/ftpaccess file does not need to
  528.     be in the protected area.
  529.  o  The ftpwho and ftpcount commands internally use ps(1).  Appearently, on
  530.     at least Linux, there's a move afoot to change the ps(1) command so it
  531.     no longer accepts dashes on the command-line options.  How annoying.
  532.     Ah well, if the target is Linux, use ps(1) without dashes to make the
  533.     silly command shut UP!
  534.  o  The cleanup in the last patch also cleared up some potential problems
  535.     with the upload clause.  The daemon is no longer critically sensitive
  536.     to minor formatting errors on this clause.
  537.  o  Added 'class=' parameter for noretrieve, allow-retreieve, path-filter,
  538.     delete, umask, chmod, overwrite, rename and upload clauses.  Cleaned up
  539.     the functions a bit for readability.
  540.  o  Port for Digital Unix 4.0(b) corrected.
  541.  o  Corrected a coding error which prevented proper use of the
  542.     address:netmask form for access control.
  543.  o  Corrected problems with NFS and the new realpath code in VR10.  Some
  544.     problems with several security models and NFS have been corrected.
  545. ###########################################################################
  546. Changes in 2.4.2-BETA-18-VR11: Released 1 December, 1998
  547.  o  Corrected a problem with CWD when no parameter is given and the user is
  548.     anonymous or guest.  The command should work but returns an error
  549.     instead; the error reveals the underlying file system.  CWD with no
  550.     parameter should work like CWD ~.
  551.  o  Correcte problems with the new realpath.c on SunOS.  Basically, the
  552.     getcwd() function on SunOS is too buggy to use so we had to switch to
  553.     getwd instead.  SunOS has joined AIX as systems which do not provide
  554.     the runtime support needed to avoid all buffer overruns in realpath().
  555.  o  Changed the lslong and lsshort ftpaccess clauses to support more
  556.     complex command lines.  Added lsplain to modify the default 'ls'
  557.     behaviour.
  558.  o  The byte count for ASCII mode file reception was off by a few
  559.     characters.  This bug had been there for a very long time.
  560.  o  A bad extern in ftpcmd.y caused garbage to be logged for the
  561.     remoteident.
  562.  o  initsetproctitle was once again causing signal 11 crashes.  Moved the
  563.     call further up yet again and they're not happening.
  564.  o  Added an option to completely disable PASV mode and/or PORT mode.
  565.  o  Added syslog message if started as a standalone daemon and there is no
  566.     ftpaccess file being used.
  567.  o  Linux libraries now define some paths already in src/pathnames.h so we
  568.     need to #include <paths.h> first.  Did this in config/config.lnx.
  569.  o  Linux library includes no longer #define MAXMNTENT so if it's not there
  570.     #define it in extensions.c until someone has the time to fix this
  571.     right.
  572.  o  Added -r option to chroot the daemon during startup.
  573. ###########################################################################
  574. Changes in 2.4.2-BETA-18-VR10: Released 1 November, 1998
  575.  o  There was a buffer-overrun in the realpath function.  Imported the
  576.     FreeBSD realpath() function to correct this error.
  577.  o  The Perl xferstats wasn't updated to match the new xferlog format with
  578.     the new completion-code field on the end.
  579.  o  AUTH (ident) the remote user during login.  Record the results in the
  580.     syslog.
  581.  o  RFC-931 (AUTH/IDENT) was finished up.  The log messages now show the
  582.     RFC-931 user if one is known.
  583.  o  Support for some Hitachi flavors of Unix was added.
  584.  o  Major cleanup of build and the makefiles.
  585.  o  A number of minor fixes, mainly having to do with differences between
  586.     ANSI/ISO and K&R C.
  587.  o  Fixed several points of confusion when some things (like size_t) are
  588.     not the same size as an int.
  589.  o  Added the -Q command-line option to suppress access to the PID files.
  590.     NOTE: Without PID files, the limit ftpaccess clause cannot determine
  591.     the number of users in the given class.
  592.  o  Added a -p option which allows the port to be specified for the control
  593.     connection.  Command-line options are also provided to allow both the
  594.     data and control port numbers to be specified.
  595.  o  The daemon did not use the correct method to choose the port for the
  596.     data connection in PORT mode.  The daemon will look up the data port in
  597.     /etc/services.
  598. ###########################################################################
  599. Changes in 2.4.2-BETA-18-VR9: Released 15 October, 1998
  600.  o  Cleaned up a few large, confusing 'if' statements in the code.
  601.  o  Changed my mind.  Regular expressions don't work well unless there's
  602.     some way to tell they're there.  Backed out all regular expression
  603.     matching for file/path names in the ftpaccess file.  This issue will be
  604.     re-evaluated in a later version.  Globbing still works everywhere it's
  605.     reasonable to use it.
  606.  o  Dead code removed.
  607.  o  Noted a number of places where strcmp was used but strcasecmp would be
  608.     more appropriate.  This makes the ftpaccess file easier to maintain
  609.     since small typographical errors won't matter so much any more.
  610.  o  Added regular expression matching to deny-mail.
  611.  o  There were reports of errors on AIX with malloc.  Testers confirm
  612.     problem in send_data().  Working on the supposition that the problem is
  613.     data alignment: the 'blksize' is off_t and malloc() wants a size_t;
  614.     added a conversion step which should eliminate the problem.
  615.  o  Fixed another discrepancy between the ANSI and K&R function
  616.     definitions.
  617.  o  Support globbing/wildcards throughout ftpaccess file for file and
  618.     directory comparisons.
  619.  o  Added for OPIE (One-time Passwords In Everything).  You will need OPIE
  620.     libraries installed to use this.  OPIE is available from
  621.     ftp://ftp.inner.net/pub/opie/opie-2.32.tar.gz
  622.  o  The extensions for 'absolute' or 'relative' pathname comparison were
  623.     not case-insensitive.  They should have been.
  624.  o  Add 'allow-retrieve' to allow retrieval of files which would be denied
  625.     by earlier 'noretrieve' clauses.  The ftpaccess clause is:
  626.         allow-retrieve [absolute|relative] [class=<classname>]... [-] <filename> ...
  627.  o  Support regular expressions in noretrieve.
  628.  o  Port for Digital Unix with C2 Securuty (SECUREOSF) corrected.
  629.  o  Allow access control commands to use address/netmask or CIDR.
  630.  o  Corrected a hostname matching bug.
  631.  o  Allow host names instead of IP numbers.
  632.  o  Reduce the number of DNS lookups needed for virtual host support.
  633.  o  xferlog now indicates success or failure.
  634.  o  realpath() needs root permissions to prevent errors under certain
  635.     security models.
  636. ###########################################################################
  637. Changes in 2.4.2-BETA-18-VR8: Released 1 October, 1998
  638.  o  AIX complained (rightly so) about several problems with the source
  639.     which prevented compiling using K&R.
  640.  o  DEC Unix 3 complains about the function 'main()' having more than two
  641.     parameters for STRICT ANSI/ISO C compliance.  This warning can be
  642.     safely ignored.
  643.  o  Corrected several minor problems and fixed errors in syslog in the
  644.     support/makefiles/Makefile.dec and src/makefiles/Makefile.dec which
  645.     prevented bulding on DEC Unix 3.x.
  646.  o  Added USE_VAR and USE_ETC for IRIX (sgi) configuration.
  647.  o  Added two more virtual-server features so we can deny anonymous login
  648.     on a virtual servier and so we can allow specified users to log in even
  649.     though they're real or chroot'd to another directory.  Also added a
  650.     feature to deny real, guest or anonymous on the default server.  The
  651.     new ftpaccess clauses are:
  652.         virtual <address> private
  653.         virtual <address> deny <username> [<username> ...]
  654.         virtual <address> allow <username> [<username> ...]
  655.         defaultserver private
  656.         defaultserver deny <username> [<username> ...]
  657.         defaultserver allow <username> [<username> ...]
  658.  o  Testing CLOSED_VIRTUAL_SERVER pointed out a bug in user() .. the
  659.     attempt to sleep to slow down password guessers can't work since
  660.     signals are off.  The daemon sleeps forever.  This has been there for
  661.     years.
  662.  o  Ported to Digital Unix 4.
  663.  o  If no 'ftp' user existed, the HELP-HACKERS patch failed to send a
  664.     response which would hang the ftp client.
  665.  o  BSD auth failures crashed the daemon.  This looks like it's been a
  666.     long-standing problem.
  667.  o  An earlier version changed the behavior of the xferlog to always show
  668.     the full, real path for the file.  This should have been a compile-time
  669.     option.
  670.  o  More typos in ftpaccess.5, some mine, some have been there for ages.
  671.  o  Added the ability to disable all DNS lookups in the daemon.  I've done
  672.     this as a compile-time option and included a discussion of the risks
  673.     and benefits in the config.h for the daemon.  Enabling this feature can
  674.     be a win for busy sites because it can reduce the time required to make
  675.     a connection as well as eliminate syslog messages caused by bad DNS
  676.     management at the remote sites.
  677.  o  Found another undocumented feature.  If the <addrglob> on a 'class' or
  678.     'deny' clause starts with a slach (/) it names a file which contains
  679.     any number of additional <addrglob> entries per line and any number of
  680.     lines.  Updated manpage.
  681.  o  Add 'greeting' clause to control the amount of information the server
  682.     gives out on the greeting.  The new ftpaccess clause is:
  683. greeting full|brief|terse
  684.  o  Added 'email' option for the 'virtual' clause so we may set this as
  685.     well.  The new ftpaccess clause is:
  686.         virutal <address> email <string>
  687.  o  Added the restriction that no real users may log in on the virtual
  688.     server.
  689.  o  If a guest logs in on the virtual server deny the login unless their
  690.     chroot point is the virtual server's root.  This restricts guest logins
  691.     to the site admin and anonymous users.
  692.  o  Added 'hostname' option for the 'virtual' clause so we may set the name
  693.     of our multi-homed ftp sites as we can with our default site.  The new
  694.     ftpaccess clause is:
  695.         virtual <address> hostname <string>
  696.  o  Added an ftpaccess clause to limit total connect time.  The new clause
  697.     is:
  698.         limit-time {*|anonymous|guest} <minutes>
  699.  o  Disallow certain email addresses as passwords for anonymous ftp.  The
  700.     new ftpaccess clause for this is:
  701.         deny-email <case-insensitive-email-address>
  702.  o  Fix a bug in the parsing of ftpconversions which I found when I put in
  703.     the new conversions for checksums.  Turns out this was the same as the
  704.     bug I fixed in VR4 parsing the ftpgroups file.
  705.  o  Cleaned up some of the cross-platform user authentication code for
  706.     SECUREOSF.
  707.  o  Modify the password cryptography for C2 Digital Unix.
  708.  o  Moved 'retrieve_is_data' to be always compiled into the code since it
  709.     was needed for SITE CHECKSUM.
  710.  o  Add site-exec-max-lines ftpaccess clause.  This clause makes the limit
  711.     on output lines from SITE EXEC configurable.  The default is a 20-line
  712.     limit, which was the old compiled-in limit.  The new ftpaccess clause
  713.     is:
  714.         site-exec-max-lines <number> [<class> ...]
  715.  o  Added IGNORE_NOOP as a new compile-time option.  It is now the default.
  716.  o  Added 'SITE CHECKMETHOD' and 'SITE CHECKSUM'.
  717.         SITE CHECKMETHOD [CRC|POSIX|MD5|RFC1321]
  718. Sets or displays the current check method.  If no parameter is
  719. given, displays the current method; otherwise the method is set to
  720. the given algorithm.  CRC and POSIX are equivalent and are the
  721. output of the GNU cksum(1) utility.  MD5 and RFC1321 are equivalent
  722. and are the output of the GNU md5sum(1) utility.  The default check
  723. method is RFC1321 (MD5).
  724. SITE CHECKSUM [<file>]
  725. Calculates the checksum for the named file.  If no file is given,
  726. the last file transferred (uploaded or download) is used.  If no
  727. file has yet been transferred, reports an error.  The current
  728. CHECKMETHOD is used to calculate the checksum.
  729. New ftpconversions: .crc and .md5
  730. Two new file conversions were added to the example ftpconversion
  731. which allow using GET to retrieve the CRC or MD5 checksums for
  732.         files.
  733. NOTE: SITE CHECKSUM requires the installation of two additional
  734. programs in the ~ftp/bin directory.   These programs have the same
  735. requirements as the external ls(1) program also normally required
  736. in that directory.  For systems without these programs, or which
  737. require building new copies, the GNU textutils package should be
  738. used.  This package is available at ftp://ftp.gnu.org/pub/gnu/ the
  739. current version at the time of this writing is
  740.         textutils-1.22.tar.gz
  741. ###########################################################################
  742. Changes in 2.4.2-BETA-18-VR7: Released 15 September, 1998
  743.  o  Transfer limits tesed the wrong values for files uploaded to the
  744.     server.
  745.  o  Added several new log messages missed in other versions having to do
  746.     with filesystem change attempts.
  747.  o  Extended logging for rejected or denied functions such as delete,
  748.     rename.
  749.  o  The QUOTA logic for BSDI doesn't match what's provided by the system.
  750.  o  My label 'slimy_hack:' appearing just before a '}' causes some
  751.     compilers to belch.  I guess some are more ANSI/ISO than others.  Made
  752.     a quick fix which ought to make them shut up until I can rewrite pass()
  753.     to make the label go away.
  754.  o  The include for 'mntent.h' isn't needed unless QUOTE_DEVICE is defined.
  755.     This caused problems on BSDI.  Moving the include to only appear for
  756.     systems which use QUOTE_DEVICE.
  757.  o  The HELP_CRACKERS patch was too agressive and, if message files were
  758.     defined for 'deny' and 'limit' could tickle bugs in ftp clients.  The
  759.     patch is backed off to drop the connection immedeately if it violates
  760.     'deny' or 'limit'.
  761.  o  Extended upload and noretrieve to have an optional parameter which
  762.     specifies whether the named file/directory is interpreted as an
  763.     absolute name or relative to the current chroot'd environment.
  764.  o  Don't respond to *ANY* commands except USER, PASS and QUIT until the
  765.     remote user logs in successfully.
  766.  o  Added PARANOID check to deny login if a real user's home directory is
  767.     bad.  Something's bunged up in /etc/passwd, why trust it?
  768.  o  Extended logging for rejected and failed login attempts.
  769.  o  Fixed a bug in popen which can cause segmentation faults.  It's unknown
  770.     if this is exploitable (it doesn't look like it is to me).  It's been a
  771.     problem for a long time.
  772.  o  Fixed a typo in the ftpaccess manpage (What, just one?  Come on!)
  773.  o  Traffic counters weren't protected by TRANSFER_COUNT in some cases.
  774.  o  The 'daemon' variable conflicts with a 'daemon()' function in some
  775.     runtimes.  Renamed.
  776.  o  Missing <grp.h>.  Gotta love Linux's grab-one-get-it-all method for
  777.     defining system headers, don't ya?  Grrr.
  778.  o  DAEMON always includes <sys/termio.h>, it was needed until VR6 removed
  779.     the attempt to detach from the controlling terminal.
  780.  o  main() is declared void; that's not ANSI, it's just stupid.
  781.  o  routevector.c uses ulong instead of u_long.  ulong doesn't exist on
  782.     many systems.
  783.  o  defumask caused a data alignment problem on HP-UX 10.
  784. ###########################################################################
  785. Changes in 2.4.2-BETA-18-VR6: Released 26 August, 1998
  786.  o  Fixed handling for the message clause so login and cwd= work as
  787.     expected.
  788.  o  The daemon responds differently in some cases when it's denying access.
  789.     This could be used by attackers to determine the validity of some user
  790.     names on the target system.  NOTE: the 331 response for some systems,
  791.     notably BSD S/Key or other challenge/response systems, may differ from
  792.     the 331 response given.  I don't have access to those systems to check
  793.     out the differences.  If you do, and work out how to hide the access
  794.     refusal until after the password challenge, please forward it to me.
  795.  o  The upload clause should use realpath on the home directory to be sure
  796.     it matches.  Otherwise, real users with /./ in their path will need
  797.     their upload clause to lexically match the home directory entry in
  798.     /etc/passwd.  This was not a big issue until I added realuser.
  799.  o  Fixed a bug with realpath, a missed condition.  If chroot'd to '/' the
  800.     xferlog shows '//' at the start of the filename.
  801.  o  Added the ability to force all UID/GID in a range to be treated as
  802.     guests.  The ftpaccess clause for this are:
  803.         guestuser <username> [<username> ...]
  804.         realgroup <groupname> [<groupname> ...]
  805.         realuser <username> [<username> ...]
  806.  o  Disallow UIDs and GIDs by numeric range.  This can obviate the need for
  807.     /etc/ftpusers.  The ftpaccess clauses for this are:
  808.         deny-uid <uid-range> [...]
  809.         deny-gid <gid-range> [...]
  810.         allow-uid <uid-range> [...]
  811.         allow-gid <gid-range> [...]
  812.  o  Added 'guest-root' to select directory based upon guest UID.  The new
  813.     ftpaccess clause is:
  814.         guest-root <root-dir> [<uid-range>]
  815.  o  Added 'anonymous-root' to select chroot directory based on class of
  816.     anonymous user.  The new ftpaccess clause is:
  817.         anonymous-root <root-dir> [<class>]
  818.  o  Missed a spot where "*" should be matched for the <root-dir> in an
  819.     upload clause.
  820.  o  Fixed a silly bug in the "rename" clause.
  821.  o  Change the defaults to deny upload, and other site-modification things,
  822.     for anonymous users.
  823.  o  Some systems, notably Solaris, have problems with the code the
  824.     standalone daemon mode used to attempt to detach from the terminal
  825.     session.  This was in the original patch.  Upon thinking about the
  826.     problem, I see no reason to keep the code arround.  If you need this
  827.     feature, use 'nohup' to run the daemon.
  828.  o  Standalone daemon mode (in VR4) missed including a header.
  829.  o  Added '-VR6' to version string in newsvers.sh.  This will be updated
  830.     with all future versions.
  831. ###########################################################################
  832. Changes in 2.4.2-BETA-18-VR5: Released 15 August, 1998
  833.  o  Cleaned up some unneeded blank lines sent in responses.
  834.  o  Added a message to show total traffic counts on the response to QUIT.
  835.  o  Added file counts, corrected missed bytes, added counts to STAT
  836.     command.
  837.  o  Added detail counters and ftpaccess clauses to limit the user's ability
  838.     to upload/download files based on these.  The new ftpaccess clauses
  839.     are:
  840.         byte-limit [<raw>] <in|out|total> <count> [<class>]
  841.         file-limit [<raw>] <in|out|total> <count> [<class>]
  842.  o  Restrict throughput for network load management.  The ftpaccess clause
  843.     for this is:
  844.         throughput <root-dir> <subdir-glob> <file-glob-list> <bytes-per-second> <bytes-per-second-multiply> <remote- glob-list>
  845.  o  Added 'tcpwindow' to configure TCP window size for performance
  846.     tweaking.  The ftpaccess clause is:
  847.         tcpwindow <size> [<class>]
  848.  o  Provided address remapping for PASV mode to allow daemon to run behind
  849.     IP-address translating firewalls (NAT).  If you use this with virtual
  850.     hosts, let me know how it goes; I think it works, but let me know if it
  851.     needs extensions for virtual hosts.  The ftpaccess clauses for this
  852.     are:
  853.         passive address <externalip> <cidr>
  854.  o  Limit PASV port ranges.  The ftpaccess clause for this is:
  855.         passive ports <cidr> <min> <max>
  856.  o  The original idea for realpath when it was included in the source kit
  857.     was that it would provide missing functionality on systems where it was
  858.     missing or replace existing functionality on systems where it was
  859.     already present.  The VR versions presume the daemon will always use
  860.     the included realpath function.
  861. ###########################################################################
  862. Changes in 2.4.2-BETA-18-VR4: Released 30 July, 1998
  863.  o  Added 'defumask' to specify umask values by class in ftpaccess.  The
  864.     ftpaccess clause is:
  865.         defumask <umask> [<class>]
  866.  o  Added the ability to specifiy groups which have no password.  You'll
  867.     still need to SITE GPASS, but just send no password.
  868.  o  Fixed possible bugs if the ftpgroup file is malformed.
  869.  o  Allow numeric UID and GID values.  On systems with large numbers of
  870.     users and a large number of upload clauses, the daemon can take a
  871.     significant period to process the ftpaccess, passwd and group files.
  872.     Effected ftpaccess clauses include: upload, guestgroup and autogroup.
  873.  o  The following problems were noted during testing:
  874.      - Issuing PORT prior to login changes the state of the daemon
  875.      - Issuing PASV after PORT does not change the mode reported by STAT
  876.      - Illegal PORT commands change the state of the daemon
  877.     This turned out to be two problems: PASV mode was being reset by
  878.     rejected PORT commands, and PASV mode wasn't reseting the state
  879.     completely after setting up a data connection.
  880.  o  HELP PORT indicated only 5 bytes were needed.  Six are.
  881.  o  Added MAPPING_CHDIR config option to support CWD working like cd
  882.     command in most Unix shells; the PWD shown is the logical path rather
  883.     than the physical path.
  884.  o  Added syslog messages for more stuff.  MKD, RMD, CHMOD and RNTO now log
  885.     as DELE has.
  886.  o  Added new command-line option to run in standalone daemon mode.  This
  887.     is a win for busy sites but not the big win it could be if it pre-
  888.     loaded the ftpaccess file into memory.  Also, at this point, the
  889.     standalone mode loses the tcpwrappers functionality which is available
  890.     when running from inetd.
  891.  o  The mod to realpath for VR3 wasn't complete.  This was mainly visible
  892.     when logging a deletion message.
  893. ###########################################################################
  894. Changes in 2.4.2-BETA-18-VR3: Released 15 July, 1998
  895.  o  Added -w and -W to enable (default, -w) or disable (-W) recording user
  896.     login and logout for ftp sessions in wtmp.
  897.  o  Noticing 'guestserver' made me look.  There are two other undocumented
  898.     ftpaccess clauses: 'lslong' and 'lsshort'.  Man page updated.
  899.  o  While researching 'nice' came across an undocumented ftpaccess clause
  900.     'guestserver'.  Man page updated.
  901.  o  New ftpaccess clause 'nice' to adjust process priorities based upon the
  902.     class.  The new ftpaccess clause is:
  903.         nice <nice-delta> [<class>]
  904.  o  The upload clause is extended to allow '*' for <owner> and <group> so a
  905.     single upload clause can work for all users.  For example:
  906.     upload /home/ftp /private/*/incoming* yes * * 640 nodirs
  907.     can be used to create private upload areas for every user.
  908.  o  The noretrieve clause is extended to mark entire directories
  909.     un-gettable.
  910.  o  The util/xferstats that comes with wu-ftpd 2.4 always produces a count
  911.     of zero for "Systems Using Archives", because the array whose size is
  912.     printed ("$systemfiles") never gets anything stored in it.  Verified to
  913.     exist in the current version.
  914.  o  The perl script xferstats incorrectly identifies internet addresses
  915.     whose host name begins with "inf" or which are only 2 components wide
  916.     (e.g., "bix.com") as unresolved.  I could not verify the "inf" problem,
  917.     but the 2 component problem has been verified to exist in the current
  918.     version.
  919.  o  On the upload clause, 'no' should imply 'nodirs'.  Good grief, how long
  920.     has this bug been lurking about?  [Ed: Since 2.1!]
  921.  o  The fixes for the CD ~ problem (ALTERNATE_CD option for beta 18) break
  922.     a few things.  Most notably, xferlog doesn't include the full name of
  923.     the file and the upload command doesn't work properly.  In addition, I
  924.     believe noretrieve should be based on the real file system rather than
  925.     the chroot'd environment.  The man page says '/' means the name is an
  926.     'absolute path specification' which I take to mean from the real file
  927.     system.  Discovered during testing; I had the same problem with my CD ~
  928.     fix in beta 17 so I was expecting this.
  929.  o  Makefile.lnx from BETA-18 links the daemon and support programs
  930.     statically.  The wisdom of this is debatable at best.
  931.  o  Makefile.lnx from BETA-18 presumes Bison is installed; it isn't always.
  932.  o  BETA-18 had the default to disable the ALTERNATE_CD fix for the CD ~
  933.     problem.  It should be enabled.
  934.  o  Merged 2.4.2-BETA-18 with 2.4.2-BETA-17-VR2.  What a pain; next time I
  935.     have to be up and ready with CVS!
  936. ###########################################################################
  937. Changes in 2.4.2-BETA-18: Released 6 July, 1998
  938.  o  Improve the build process for Solaris.
  939.  o  The response to the MKD command was not RFC 959 compliant.  A number of
  940.     responses given by wu-ftpd were not compliant with RFC 959. I have
  941.     audited this in the software and corrected as many as I can find.
  942.  o  Make some changes to the installation process for Linux.
  943.  o  Fixed a case where a variable does not get properly defined if UPLOAD
  944.     is not defined in config.h.
  945.  o  Added more information about the impact of  the existance of the
  946.     shutdown message file to the NOTES file.
  947.  o  The wrong error message would be returned when a write fails (during a
  948.     PUT).
  949.  o  Add "exit(0);" to the end of the ftpshut.c file.
  950.  o  Permit the daemon to make use of the -A option to /bin/ls when on
  951.     Solaris 2.
  952.  o  Log information when a transfer data connection comes from somewhere
  953.     other than the address of the control connection.
  954.  o  Made it easier to compile on HP/UX.
  955.  o  Fixed an "off by one" problem in the "limit" stanza of the ftpaccess
  956.     file when specific times are specified.
  957.  o  Linux releases other than RedHat 5.0 running kernels with versions
  958.     greater than 2.0.31 would not compile properly.
  959.  o  Solaris 2.5.1 on sparc would not correctly determine if the snprintf
  960.     family of library routines were to be linked from the C library or from
  961.     the support library.
  962.  o  SITE CHMOD would not accept values greater than 777. Now, you can. Just
  963.     define UNRESTRICTED_CHMOD in the root-level config.h file.
  964.  o  Port correction for HP/UX.
  965.  o  wu_logwtmp did not include the username when a logout record is
  966.     written.
  967.  o  On SGI, initsetproctitle causes problems. I don't have an SGI to test
  968.     the fix on, but I have attempted to address it in this release.
  969.  o  Fixed a problem with the STAT command when in Passive mode.
  970.  o  The home directory finding routing in glob.c would not return the right
  971.     stuff when the "/./" convention is used for guest users.
  972.  o  Port correction for DEC UNIX.
  973.  o  Made it easier to compile of AIX 4.2.
  974.  o  _LARGE_FILES should not be defined for AIX 4.2 builds. I have changed
  975.     the config.h file for aix to do this for AIX 4.2. I don't have AIX, so
  976.     I don't know if this will work, but it's in there.
  977.  o  Changed the strategy for using bigcrypt() on C2 Security on Dec OSF/1.
  978.  o  NO_PRIVATE was not explicitly defined or undefined in config.h.
  979.  o  Fix a problem in the output of the ftpcount command.
  980.  o  Fix the "build" script to make it format the error message properly
  981.     when multiple compile targets are provided.
  982.  o  Corrected a documentation error in describing the impact chroot has on
  983.     hard links.
  984.  o  Address some misplaced or missing calls to alarm(0).
  985.  o  ftpcmd.y did not have NULL checking in certain places.
  986.  o  Port corrections for BSD/OS including support for BSD authentication.
  987.     This should work on FreeBSD as well, but I have not altered the FreeBSD
  988.     configuration to make use of this.
  989.  o  ftpcount did not always work correctly due to permissions problems on
  990.     the login database file that ftpd maintains.
  991.  o  Fixed problems in the "limit" processing that were introduced in
  992.     beta-16.
  993.  o  Fixed some problems with output formatting for ftpwho.
  994.  o  Added s/key support on NetBSD.
  995.  o  Addressed the issue concerning what "cd ~" should do.  The alternate
  996.     behavior can be obtained by defining ALTERNATE_CD in the root-level
  997.     config.h file.
  998.  o  Fixed processing of the %U directive when the user is unknown.
  999.  o  RFC 931 calls would fail due to wu-ftpd failing to bind to the correct
  1000.     address on multi-homed hosts.
  1001.  o  Fixed a problem where ftpd would exit with signal 11.
  1002.  o  Fixed a problem with the handling of standard error messages from
  1003.     programs called during the file conversion process.
  1004. ###########################################################################
  1005. Changes in 2.4.2-BETA-17-VR2: Released 3 June, 1998
  1006.  o  Left a debugging statement in for syslogmsg in VR1 patches.
  1007.  o  The fix for CD ~ broke the upload and noretrieve access-control
  1008.     statements and changed what was written to xferlog and the syslog.
  1009.     Well, actually, it didn't break the noretrieve statement, but the man
  1010.     page says '/' means the name is an 'absolute path specification' and I
  1011.     take that to mean relative to the _real_ filesystem, not the chroot'd
  1012.     one.  Discovered when set live on my main server; I really should'a
  1013.     tested with more than one guestgroup.
  1014. ###########################################################################
  1015. Changes in 2.4.2-BETA-17-VR1: Released 3 June, 1998
  1016.  o  Shutdown warnings were not given to normal (non-anonymous) users on
  1017.     login.
  1018.  o  Added 'hostname' configuration statement.  Normally the server
  1019.     determines its host name from the system.  This allows the admin to set
  1020.     the name on machines with several names (multihomed) where the default
  1021.     name is not the desired name.  Manpage updated.  The new ftpaccess
  1022.     clause is:
  1023.         hostname <some.host.name>
  1024.  o  Move Linux to use POSIX regex included with the system instead of the
  1025.     routines included with wu-ftpd.  This allows us to define path-filter
  1026.     statements which allow spaces in the pathnames.  For example:
  1027.         path-filter anonymous /etc/pathmsg ^[-A-Za-z0-9_.[:space:]]*$ ^. ^-
  1028.  o  Somewhere along the way the upload statement was broken.  The fix adds
  1029.     a new parameter to upload so admins can determine the permissions for
  1030.     any new directories permitted.  New features are documented in
  1031.     ftpaccess manpage.
  1032.  o  Add -X command-line option and syslog option to log statement in
  1033.     ftpaccess.  These options eliminate xferlog output and direct transfer
  1034.     logs to syslog instead.  The new ftpaccess clause is:
  1035.         log syslog
  1036.  o  Prevent NOOP resetting idle timer.
  1037.  o  The CD command supports ~<username> but gives errors when just ~ is
  1038.     found.  Note: there are still problems with other commands which may or
  1039.     may not accept tilde-user notation and may or may not understand a
  1040.     tilde by itself means the current user's home directory.  This only
  1041.     effects chroot'd users.
  1042. ###########################################################################
  1043. Changes in 2.4.2-BETA-17: Released 10 May, 1998
  1044.  o  Fix the hostacc.c introduced in beta-16. This fixes all the various
  1045.     alloc/free problems in the memory allocation and retains the dynamic
  1046.     feature introduced in beta-16.
  1047.  o  Remove a declaration atol() in ftpcmd.y so that wu-ftpd will compile
  1048.     properly on systems that declare atol as a macro.
  1049.  o  Move "initsetproctitle" from one location in the ftpd.c file to
  1050.     another.  This should fix the problems many people report on some
  1051.     operating systems concerning the use of command line arguements.
  1052.  o  Make a cosmetic fix to change what setproctitle() puts in the line
  1053.     returned when you do a ps from "sendmail:" to "ftpd:". This was a
  1054.     mistake I made when I integrated the new sendmail 8.8.7 proctitle stuff
  1055.     into beta-16.
  1056. ###########################################################################
  1057. Changes in 2.4.2-BETA-16: Released 21 December, 1997
  1058.  o  The install shell script (when used on OpenServer 5) does not work
  1059.     correctly.  Also, man pages can be installed and used with either nroff
  1060.     or groff is available. Groff can be obtained for OpenServer 5 from the
  1061.     sco web site. So, man pages will now be installed on SCO.
  1062.  o  Fix some memory leaks.
  1063.  o  off_t is a long long on AIX 4.2. I have attempted to compensate for
  1064.     this in ftpd.c, but I don't have an AIX system to test on, so it may
  1065.     not work. This affects places where wu-ftpd wants to print the size of
  1066.     files or the size of transfers.
  1067.  o  There is a long standing problem in the code that does port checking.
  1068.     This bug makes it possible to exploit priviledged ports on the host
  1069.     system or the client system (but not other systems).
  1070.  o  Fix a bug in the gzip2cmp utility.
  1071.  o  Added a number of small fixes to make it easier to compile on AIX.
  1072.  o  Prevent some systems from faulting when they encounter a null pointer
  1073.     in ftpcmd.y. Many systems already handle this, but some don't and this
  1074.     will insure that those are covered as well.
  1075.  o  Correct for differences between SecureWare on Digital Unix 3.2 and
  1076.     Digital Unix 4.0.
  1077.  o  A number of porting issues for SVR4-derived systems and Solaris 2.
  1078.     These are mainly centered around support for utmp/wtmp entries.
  1079.  o  There were spaces where there should be tabs in the Makefiles for OSF.
  1080.  o  Add -D_NO_PROTO to CFLAGS in the AIX Makefiles.
  1081.  o  The man pages should be installed mode 644 (not 755).
  1082.  o  Fix a number of errors in the implementation of the reply routines,
  1083.     especially when vprintf is not available.
  1084.  o  Add a NOTE that the compiler which comes with HP/UX won't work.
  1085.  o  HP/UX now builds with VIRTUAL as the default.
  1086.  o  The man page for the daemon be installed as ftpd.1m instead of
  1087.     in.ftpd.1m for systems where section 1m is correct.
  1088.  o  Reevaluate guestgroup after autogroup.
  1089.  o  Dynamically allocate the ftphosts file in memory; removing the limit of
  1090.     100 hosts.
  1091.  o  wu-ftpd can hang in in "read" forever.
  1092.  o  Fix conflicts between some subroutine names (getline and logwtmp) in
  1093.     wu-ftpd and functions in glibc2.
  1094.  o  Fix a problem which can come up with strings which are not properly NUL
  1095.     terminated.
  1096.  o  Add a comment in NOTES that for versions of Digital Unix without C2,
  1097.     you have to undef SECUREOSF in the config file for Digital Unix.
  1098.  o  Porting correction for AIX; some minor code cleanups.
  1099.  o  Correct building the support library under Solaris 2  to prevent ld
  1100.     from getting upset.
  1101.  o  In ftpcount make sure the numbers listed are no lower than zero.
  1102.  o  Correct S/KEY support for FreeBSD.
  1103. ###########################################################################
  1104. Changes in 2.4.2-BETA-15: Released 12 September, 1997
  1105.  o  Correct a problem in the "NLST" command that could cause a system to
  1106.     eat up all memory and get sluggish. This could be seen as a Denial of
  1107.     Service attack.  I have changed the software to detect this type of
  1108.     attack and not permit it.
  1109.  o  The s/key challange in wu-ftpd did not conform to RFC 1760.
  1110.  o  Porting corrections for FreeBSD.
  1111.  o  Porting corrections for BSD/OS.
  1112.  o  Fix a problem with the new, expired password support in beta-14.
  1113.  o  Fix virutal hosting for AIX 4.1.x.
  1114.  o  Fix some problems in S/KEY support.  This is conditionalized since
  1115.     FreeBSD supports the old calling method.
  1116.  o  Fixed a problem in ftpcmd.y concerning correctly recognizing the PASS
  1117.     command in a non-case sensitive manner.
  1118.  o  Correct some configuration file problems when compiling for NetBSD.
  1119.  o  Correct a typo in fnmatch.c.  Also made changes to fnmatch.c to
  1120.     accomodate the lack of certain flag definitions on systems that claim
  1121.     to be POSIX compliant. These flags are not used by the current wu-ftpd
  1122.     server code.
  1123.  o  Correct the description of the command line -o option in the ftpd man
  1124.     page.
  1125. ###########################################################################
  1126. Changes in 2.4.2-BETA-14: Released 14 August, 1997
  1127.  o  When wu-ftpd is used on Unixware, readdir in glob.c would not work as
  1128.     expected since the version picked up during the link is the one from
  1129.     the ucb library, not the regular C library.  Changed the UnixWare
  1130.     Makefile to link the regular C libarary before the ucb library.
  1131.  o  Port for IRIX 6.3 corrected.
  1132.  o  Port for Unixware 2.1 corrected.
  1133.  o  getspnam on Unixware 2.1 is not NIS aware, so the password read from
  1134.     the password file should not be overwritten should the call fail.
  1135.  o  Removed the dependency on libc in the makefile for Linux.
  1136.  o  Port for AIX corrected.
  1137.  o  NetBSD/sparc uses an int64_t for that stbuf.st_size. This means that
  1138.     %qu should be used for a sprintf selector instead of %lu.
  1139.  o  Found a problem with Solari 2.5.1 libraries when used in chrooted mode
  1140.     along with a dynamically linked "ls". Sun has assigned a bugid for this
  1141.     problem.  See the NOTES file for more on this.
  1142.  o  Fixed another possible problem with ABOR verb processing with OOB data.
  1143.  o  Using the /var/tmp directory for storing the pids is a bad idea.  All
  1144.     configurations have been changed not to do this. This was really only
  1145.     an issue on System V systems and older BSD systems.
  1146.  o  There is a problem attempting to compile beta-13 with the Bellcore skey
  1147.     library. That's because it doesn't compile with that version. The
  1148.     version needed is the one from the logdaemon suite by Wietse Venema. I
  1149.     am updating the documentation to make this clear.
  1150.  o  It's easy for folks to get confused setting up the anonymous login and
  1151.     use the /./ suffix on the home directory like that used for guestgroup.
  1152.     When done, it will make other functions (like upload) in the ftpaccess
  1153.     fail to work. Processing of the two should be the same.
  1154.  o  Made a change to how the upload directive is parsed so that "no dirs"
  1155.     does allow directories to be created and "no some-other-string" does
  1156.     not.  Previously it didn't work this way.
  1157.  o  A change made during the release of beta 12 changed how the upload
  1158.     option did filename matching to make it non-intuitive. This change has
  1159.     been reversed.
  1160.  o  Made some fixes to some of the 5XX responses associated with failed
  1161.     logins comply with RFC 959
  1162.  o  Correct some logic which would cause the server to send two responses
  1163.     to a client when passwd-check is used and the user failed to enter a
  1164.     "valid" password when logging in anonymously.
  1165.  o  The "deny" keyword when followed with a domainname glob did not work.
  1166.     An IP address or address glob does work on SunOS 4.1.X machines. This
  1167.     turns out to be an issue only if you are not running yp or if yp is not
  1168.     able to access DNS.  To address this, I have added -lresolv to the
  1169.     SunOS 4.1 makefile.
  1170.  o  Remove HAVE_REGEX_H from the NeXTStep 3.X configuration.
  1171.  o  Add a NOTE about a way to setup the "chroot" directory for wu-ftpd on
  1172.     IRIX.
  1173.  o  Correct a benign syntax problem in access.c. This might cause some
  1174.     compilers to generate a warning.
  1175.  o  A number of places in the software are attempting to print out off_t
  1176.     values using printf selectors that can't handle the size.  Use casts to
  1177.     work arround the problem for now, but the mess should be revamped.
  1178.  o  Port for AU/X corrected.
  1179.  o  Fix some logic errors in processing the ABOR verb.
  1180.  o  Plug some memory leaks in the glob code.
  1181.  o  The argv array should be zeroed out before loading it.  Also, ensure we
  1182.     don't spill off the end of the argv array when filling it.
  1183.  o  Fixed a problem in realpath that is exposed when it is called with a
  1184.     rooted path. It could attempt to access an uninitialized location.
  1185.  o  Corrected an error in the ftpaccess.5 man page concerning the
  1186.     path-filter example.
  1187.  o  Made some cleanups in the ftpaccess file in the doc/examples directory.
  1188.  o  Fixed a bug in some of the debugging code where syslog is called
  1189.     without a printf format string. This causes the daemon to crash on some
  1190.     operating environments.
  1191.  o  Added a NOTE about the conflict between using Virtual FTP and
  1192.     TCPWrappers.
  1193.  o  The passive subroutine might be vunerable to attack because a user
  1194.     could attempt to start a passive connection without doing a login
  1195.     first.  This is now checked in the passive connection.
  1196.  o  /usr/ucb/installbsd should be used for installation on OSF/1.
  1197.  o  Port correction for C2 security with Digital Unix 4.X. These changes
  1198.     are made to the Digital Unix configuration. C2 is on by default.
  1199.     "./build dec" to get this.
  1200.  o  Corrected problems when processing the %E macro.  It becomes evident
  1201.     with the %E macro is used twice in an extended message.  The entry
  1202.     information is not reset between calls. This can cause information to
  1203.     be printed twice.
  1204.  o  FreeBSD support dirent.h and that sys/dir.h is being phased out. A
  1205.     change to the FreeBSD configuration header file has been made to use
  1206.     dirent.h in this release.
  1207.  o  newvers.sh was made more POSIX compliant without affecting its
  1208.     operation on non-POSIX systems.
  1209.  o  The arguments for select() under HPUX may not have the same types as
  1210.     those found on other systems.
  1211.  o  Corrected a problem when %U is used in a banner prior to the user
  1212.     performing a login.  Before beta 14, this could cause a segmentation
  1213.     violation. Now, it will cause %U to print "[unknown]" since login has
  1214.     not been done as yet.
  1215.  o  Added a NOTE about Digital Unix and C2 security.
  1216.  o  HAVE_STATVFS should be defined in the SGI IRIX configuration file.
  1217.  o  Corrected a logic problem when the socket call fails when trying to
  1218.     open a data socket. The close() was being made anyway and this would
  1219.     generate a "bad file number" error since the socket never was opened.
  1220.  o  SPT_TYPE should be SPT_NONE for SGI IRIX to insure that the time stamps
  1221.     on things didn't get set to GMT.
  1222.  o  The default umask should be 022 instead of 002.
  1223.  o  ftpconversions and ftpgroup parsing was in a sad state.  Cleaned up.
  1224.  o  Dealt with expired logins (when shadow passwords are used).
  1225.  o  snprintf should be used now that there is good one for those systems
  1226.     that don't have it in the support library and for those that do have
  1227.     snprintf, it should be used where controlling the length of things is
  1228.     important. To that end a number of changes have been made in ftpd.c to
  1229.     use snprintf more widely.
  1230.  o  On some versions of SunOS 4.X, the size_t typedef is not pulled in with
  1231.     the include directives that are there. I have modified snprintf.c to
  1232.     include <stdlib.h> when an ANSI C compilier is used and <sys/types.h>
  1233.     when one is not used. Hopefully, that will catch a size_t definition.
  1234.     If not, let me know, but do be sure to include what OS release and what
  1235.     compiler you are using. Additionally, I had left "const" definitions in
  1236.     places where non-ANSI C compilers would encounter them. I have removed
  1237.     those.
  1238.  o  Port for SunOS 4.1.x corrected.
  1239.  o  Fixed an error in the ftpaccess file handling for the tar and compress
  1240.     keywords.  If any class was permitted to use them, then any class was.
  1241.  o  Fixed some typos in the Makefiles: using .c where .o is correct.
  1242.  o  rn is no longer passed to setproctitle since beta-13, so it does not
  1243.     need to attempt to strip.
  1244.  o  ftpcmd.y has a one-off error in checking the length of a string.
  1245.  o  Fixed popen.c to keep it from overflowing the argv buffer and from
  1246.     freeing space that was not allocated for that same argv buffer.
  1247.  o  Fixed access.c and ftpcount.c to address a problem in a bug fix in
  1248.     beta-13 that kept access limits involving days other than Any from
  1249.     being enforced.
  1250.  o  Fixed the xferstats script to allow it work when the log involves
  1251.     timestamps from two years.
  1252.  o  Port for IRIX corrected.
  1253.  o  RMD and DELE should both check permissions before attempting to do
  1254.     anything.
  1255.  o  getdatasock should return the errno to the caller that caused the
  1256.     socket call to fail (as opposed to anything else that happens in that
  1257.     routine).
  1258.  o  FreeBSD uses <sys/mount.h> for file system information used by the %F
  1259.     macro.
  1260.  o  Add a define (HAVE_GETRLIMIT) to the config.hpx for HP-UX 10.10.
  1261.  o  Port for Linux corrected.
  1262.  o  Fixed a bug in the SITE CHMOD command that would cause the server to
  1263.     send two replies in some cases. This could confuse some FTP clients
  1264.     (and is a violation of protocol anyway).  This should have been in
  1265.     beta-13, but I missed it somehow.
  1266.  o  The dependencies on vers.c that are not uniform in all makefiles and
  1267.     can cause problems with certain versions of make.  All makefiles for
  1268.     all operating systems supported in this distribution now have an
  1269.     explict dependency that should cause newvers.sh to be run if yacc was
  1270.     successful in building ftpcmd.c from ftpcmd.y. It will also properly
  1271.     stop attempting to compile anything (other than ckconfig) until this
  1272.     problem is fixed by the user. This can usually be done by being sure
  1273.     yacc is installed and in the user's PATH.
  1274.  o  Fixed a Y2K compliance problem in ftpcmd.y where the year would always
  1275.     be printed as 19XX.  wu-ftpd is as Y2K compliant as it can be with this
  1276.     fix.
  1277.  o  I edited the INSTALL, README and NOTES documents in an attempt to make
  1278.     them clearer. I had a number of questions about "-a" and
  1279.     /etc/inetd.conf.  People evidently don't read the README file very
  1280.     closely, so now I have put this information in more places than just
  1281.     the NOTES file. Hopefully that will stop most of these types of
  1282.     questions.
  1283. ###########################################################################
  1284. Changes in 2.4.2-BETA-13: Released 3 March, 1997
  1285.  o  I noticed that setproctitle was not being called correctly in a couple
  1286.     of places in ftpd.c. There were not enough arguments.
  1287.  o  Fixed some coding problems in access.c when determining host access
  1288.     information.
  1289.  o  Added some bounds checking ftpd when building the directory command to
  1290.     send to the operating system. These changes may not be portable to all
  1291.     platforms, since they use snprintf, but we'll give it a try.
  1292.  o  Port for SCO Openserver 5 corrected.
  1293.  o  ftpcount.c does not include stdlib.h, which will cause malloc to
  1294.     allocate too little space to hold st_size on FreeBSD.
  1295.  o  The failsafe number of fds in popen.c should be bigger than
  1296.     sizeof(long).  I am setting it to 31. We'll see if that helps folks
  1297.     have fewer signal 10 or 11 errors that are unexplained.
  1298.  o  FreeBSD already had the fnmatch function in its C library and didn't
  1299.     need the version in the support library.
  1300.  o  Removed all references to LOG_TOOMANY, since it is no longer being
  1301.     actually implemented.
  1302.  o  Enforce FreeBSD (when this software is built on FreeBSD) concerning the
  1303.     logging of numeric addresses when DNS name is larger than UT_HOSTSIZE
  1304.     field.
  1305.  o  Removed rn from any string put in setproctitle.
  1306.  o  Made some fixes to skey support.
  1307.  o  Fixed some problems with the INSTALL file. There was a missing step and
  1308.     other problems.
  1309.  o  sysconf be used to get the number of fds. This has been added to
  1310.     popen.c and a change has been made to config.hpx to use that. I have
  1311.     also tried to add this to other configurations that are documented (or
  1312.     are known) to support sysconf.
  1313.  o  There was an extra %s in one of the reply strings. This is now fixed.
  1314.  o  Corrected a problem in the code I put into popen.c to attempt to
  1315.     address an overflow problem. Too much late night coding for me:-).
  1316.  o  Corrected an inconsistency in the forward definition of realpath when a
  1317.     STDC compiler is used.
  1318.  o  Corrected a problem with compiling wu-ftpd on OSF. This is due to an
  1319.     failure in the software to include the correct include file.
  1320. ###########################################################################
  1321. Changes in 2.4.2-BETA-12: Released 19 January, 1997
  1322.  o  The use of putchar in ftpd.c and ftpcmd.y might have side effects on
  1323.     argument lists when putchar is a macro.  The use of putchar has been
  1324.     changed to putc in these files for this release.
  1325.  o  Made some changes to ftpcount.c to make it return more useful
  1326.     information when used with Solaris2 and AIX.
  1327.  o  Added a mechanism to permit AIX hosts to make effective use of the
  1328.     virtual host feature in wu-ftpd.
  1329.  o  FreeBSD configuration should not install the sample configuration files
  1330.     over previously existing ones.  This release does not install them at
  1331.     all.
  1332.  o  Added additional protection for some operating system over the
  1333.     protection already provided.
  1334.  o  Made a fix to the virtual host code that permits guest groups to
  1335.     continue to work.
  1336.  o  Made a significant security fix without which regular and anonymous
  1337.     users could access files as the root user.
  1338.  o  Made a fix to permit bad autogroup entries in the ftpaccess file to be
  1339.     ignored.
  1340.  o  The readme directive should really only apply to regular files.
  1341.  o  Corrected a number of problems with upload.
  1342.  o  Corrected an inconsistency between the documentation and how the server
  1343.     logs information. The server has been fixed to document guest users in
  1344.     the xferlog with a "g" and real users with a "r".
  1345.  o  Corrected an inconsistent use of #if verus #ifdef in authenticate.c.
  1346.  o  Fixed some bugs in the build program.
  1347.  o  ftpd.c should use getopt.
  1348.  o  Fixed a bug in how ftpcount reports classes that can have an unlimited
  1349.     number of users.
  1350.  o  All filename checking should be case sensitive.
  1351.  o  Fixed a bug in how the shutdown feature works. The bug is that new
  1352.     connections may continue to be accepted after shutdown is in effect.
  1353.  o  Fixed a bug in how the ftw.h file in the support directory gets
  1354.     included when it shouldn't be for Unixware 2.1.
  1355.  o  Made changes to ftpcmd.y to ensure that free() is only called when the
  1356.     arguments are non-null.
  1357.  o  Ported to AU/X 3.0
  1358.  o  Fixed it so that "anonymous" and "ftp" are made to be the same as far
  1359.     as the server is concerned.
  1360.  o  Corrected a mispelling in the NOTES file.
  1361.  o  Corrected a bug introduced in the academ betas with the T_ASCII flag in
  1362.     ftpconversions. Its meaning had become reverse from what it used to be.
  1363.  o  Fixed a problem in the old virtual code where an illegal strcpy was
  1364.     being done.
  1365.  o  Fixed the basic problems introduced in beta-11 with the virtual host
  1366.     code. There have been no changes in how the configuration files are
  1367.     configured.
  1368.  o  The ftpgroups and ftpconversions file checks in conversions.c and acl.c
  1369.     should be done using an fstat after an open succeeds.
  1370.  o  There were places where files could or should be closed.
  1371.  o  Corrected some macro inconsistencies in the manual pages.
  1372.  o  Corrected some typos in the manual pages.
  1373.  o  fnmatch.c did not have the right flags defined correctly.
  1374.  o  Unixware 2.1 supports getrlimit.  So, this is now added to config.uxw
  1375.     in the src/config directory.
  1376.  o  stderr output from ftpd when being started by inetd were problematical.
  1377.     These error messages now go to syslog.
  1378.  o  AUSCERT brought to my attention a need to check to be sure the 100
  1379.     element argv array in the popen subroutine is not overflowed. This is
  1380.     now done.
  1381.  o  Subsequent files requests couldn't be aborted correctly.
  1382.  o  Prevented a possible overflow problem when processing the SITE CHMOD
  1383.     and SITE UMASK commands. The server did not check for overflow
  1384.     conditions.
  1385.  o  STAT was using a 211 response when a 213 is probably better.
  1386.  o  RFC 1127's suggestions are not being followed by this server
  1387.  o  Subsequent files upload requests couldn't be restarted correctly.
  1388.  o  Having the debug mode log passwords is not good.
  1389.  o  Corrected a typo on one of the URLs in the NOTES file.
  1390.  o  When a null is sent to the server, it should ignore it but was treating
  1391.     it like EOF. Now it does ignore it.
  1392.  o  Corrected errors in the ftpd.8 manual page.
  1393.  o  Made some adjustments for making better use of available library
  1394.     routines in Unixware 2.1.
  1395.  o  Solaris 2.X does support getrlimit.  Changed config.sol to make use of
  1396.     it.
  1397.  o  Ported to Digital Unix 3.2 with C2 Security.
  1398.  o  There were some instances in ftpcmd.y where values could be NULL. This
  1399.     would cause segmentation violations on may flavors of Unix.
  1400.  o  Fixed a bug in processing "SITE CHMOD 0". The command didn't work and
  1401.     the server didn't give a reply.
  1402.  o  Linux 2.0 (actually libc 5.3.12) changed the way that directory
  1403.     manupulation was done.  The problem was that glob.c would not compile
  1404.     on Linux 2.X systems.  Ensured that Linux 1.X users would still be able
  1405.     to use this on their systems.
  1406. ###########################################################################
  1407. Changes in 2.4.2-BETA-11: Released 15 April, 1996
  1408.  o  The manual pages for ftpaccess.5 and ftpd.8 have been modified. ftpd.8
  1409.     now documentes the previously undocumented "-u umask" option.
  1410.     ftpaccess.5 now clarifies the fact that the root-dir specified in the
  1411.     upload configuration line MUST match the home directory in the
  1412.     operation system password database.
  1413.  o  Fixes for the optional shadow password file support for Linux.
  1414.  o  The configuration file for Solaris specified the MAXHOSTNAMELEN before
  1415.     it was possible to check to see if was defined and this caused there to
  1416.     be spurious (and benign) error messages to be generated.
  1417.  o  The file size in BSDI 1.1 is a long not a quad_t. This means that the
  1418.     conversion arguement should not be qd for sprintf's involving this
  1419.     variable.
  1420. ###########################################################################
  1421. Changes in 2.4.2-BETA-10: Released 15 March, 1996
  1422.  o  Made some changes for AIX that I can't verify since I don't have AIX.
  1423.  o  Added a number of small changes for FreeBSD.
  1424.  o  Modified support for virtual domains.  Modified the
  1425.     VIRTUAL.FTP.SUPPPORT support file and the man pages to reflect this
  1426.     change.
  1427.  o  Added back an idle timeout routine that appears to compile cleanly on
  1428.     all the systems I test on.
  1429.  o  Fixed some configuration problems for Linux.
  1430.  o  Fixed the output of "site help" command to return the email address
  1431.     listed in the "email" entry from the ftpaccess file (if available).
  1432. ###########################################################################
  1433. Changes in 2.4.2-BETA-9: Released 23 January, 1996
  1434.  o  Two changes to popen.c:  In the child process, the port attached to the
  1435.     ftp protocol port is now closed before exec();  In the child process,
  1436.     the effective user and group ids are set as the real user and group ids
  1437.     prior to exec().
  1438.  o  The "nodirs" option of the upload directive in an ftpaccess file is now
  1439.     fixed and actually works.
  1440.  o  Added endgrent() to access.c, private.c and extensions.c to ensure the
  1441.     /etc/group or ~ftp/etc/group file is closed after it is used. Fix
  1442.     suggested by CERT.
  1443.  o  Moved openlog() in ftpd.c up closer to the beginning of the program.
  1444.     Fix suggested by CERT.
  1445.  o  Fixed all the support makefiles to build vsnprintf in the support
  1446.     library since most systems do not have it. I have left it out of
  1447.     systems that I know do have the real library routine (all BSD 4.4-Lite
  1448.     based OSes have this).
  1449. ###########################################################################
  1450. Changes in 2.4.2-BETA-8: Released 5 December, 1995
  1451.  o  Overhauled reply, lreply and setproctitle to make appropriate use of
  1452.     varargs or stdargs as appropriate.
  1453.  o  Added some FAQ references in the README file.
  1454.  o  Added HAVE_GETRLIMIT and changes config files to support it where
  1455.     available in preference to HAVE_GETDTABLESIZE, which is now obsolete.
  1456.  o  Added HAVE_SETPROCTITLE as a possible define to include the
  1457.     setproctitle() library routine from the system if it is available.
  1458.  o  Added differentiator so that BSDI 1.X setproctitle() library routine is
  1459.     not used since it appears to be buggy.
  1460.  o  Made a number of changes for BSD/OS.
  1461.  o  Lowered optimization level from O3 to O2 for AIX.
  1462.  o  Added some information in NOTES for adding shadow support under Linux.
  1463.  o  Added some fixed for the use of sys_siglist.  HAS_SIGLIST must be
  1464.     defined for this to be used.
  1465.  o  Added some fixes for CPP processing problems with Digital Unix.
  1466. ###########################################################################
  1467. Changes in 2.4.2-BETA-7: Released 23 October, 1995
  1468.  o  Support for Hitachi Unix variant added.
  1469.  o  Changes in the configuration files for BSD/OS to accomodate a bug in
  1470.     the sprintf inheritied from BSD 4.4 Lite. (Effects FreeBSD, NetBSD and
  1471.     BSD/OS.)
  1472.  o  Addition of a cookie '%u' to extensions.c which will show the RFC931
  1473.     remote username when available. I somehow like it to have the remote
  1474.     user see we take the 'all actions are logged' line seriously.
  1475.  o  Support for SCO added.
  1476.  o  Corrected the diagnostics from the randomsig subroutine.
  1477. ###########################################################################
  1478. Changes in 2.4.2-BETA-6: Released 15 October, 1995
  1479.     If you have an original copy of 2.4.2-BETA-6, the WU-FTPD Development
  1480.     Group would like a copy.
  1481.  o  Added virtual ftp server support.
  1482.  o  Added some AIX patches.
  1483.  o  Added some notes concerning skey support in the NOTES file.
  1484.  o  Config files for BSD 4.4-based OSes added.
  1485.  o  Closing some file descriptors before exec in ftpd_popen (popen.c).
  1486.  o  Missed changes to fnmatch in access.c.
  1487.  o  Fixed ftpconversion problems when gzcating plain files.
  1488. ###########################################################################
  1489. Changes in 2.4.2-BETA-5: Released 11 July, 1995
  1490.  o  Fixed ftpcmd.y parser for bug that has been present since the release
  1491.     of the NET-2 ftp daemon. Multiple 500 lines are not returned when
  1492.     certain bad commands are presented to the server.
  1493.  o  Changed build to make the tar file create a directory that is the
  1494.     current release name and unpack into that newly created directory
  1495.     relative to the current directory.
  1496.  o  Keep wu-ftpd from hanging when trying to use ident to identify someone.
  1497.  o  More fixes to the config.hpx file for HP-UX.
  1498. ###########################################################################
  1499. Changes in 2.4.2-BETA-4: Released 29 June, 1995
  1500.  o  Replaced a large part of the noretrieve subroutine in extensions.c.
  1501.  o  Fixes for HPUX.
  1502.  o  Fixed up the Makefiles for SunOS 4.1.X to make use of the dynamic load
  1503.     library correctly. This should probably be reworked to only use static
  1504.     linking, but that will be looked at another time.
  1505.  o  Fixed some more bad NULL versus '' problems in ftpd.c and realpath.c
  1506.     in the src directory.
  1507. ###########################################################################
  1508. Changes in 2.4.2-BETA-3: Released 18 June, 1995
  1509.     If you have an original copy of 2.4.2-BETA-3, the WU-FTPD Development
  1510.     Group would like a copy.
  1511.  o  Created the NOTES file and revised the README and INSTALL documents.
  1512.  o  Fixed some minor source code cast that the SunPro C compiler was
  1513.     complaining about. Files affected (all in the src directory) are:
  1514.     ftpcmd.y, realpath.c, private.c, logwtmp.c, ftpd.c extensions.c
  1515.  o  Revised the LINUX support to conform to LINUX 1.2.8 with gcc 2.6.3 from
  1516.     the slakware distribution.
  1517. ###########################################################################
  1518. Changes in 2.4.2-BETA-2: Released 18 June, 1995
  1519.     This version merged much of the functionality of 2.4-hobbit into Stan's
  1520.     baseline.
  1521.     If you have an original copy of 2.4.2-BETA-2, or 2.4-hobbit, the
  1522.     WU-FTPD Development Group would like a copy.
  1523.  o  Removed the timeout patch from Dan Thorson that was in BETA-1. However,
  1524.     it will be back in a future beta.
  1525.  o  Lifted from the Debian wu-ftpd-2.4-4 release with little or no change:
  1526.         doc/ftpaccess.5
  1527.         doc/ftpd.8
  1528.         config/config.lnx
  1529.         config/config.s41
  1530.         src/access.c
  1531.         src/acl.c
  1532.         src/ftpcount.c
  1533.         src/ftpshut.c
  1534.         src/hostacc.c
  1535.         src/logwtmp.c
  1536.  o  build: added a kludge for enabling these changes, by spawning a shell.
  1537.     Added specific support for FreeBSD 2.0.  Also, copy the Makefiles and
  1538.     config.h instead of hardlinking them, so that edits don't trash the
  1539.     original copies!
  1540.  o  support/authuser.c: limit sscanf() of identd strings.
  1541.  o  support/makefiles/*: minor changes to a couple of system-specific
  1542.     Makefiles.
  1543.  o  extensions.c: [Debian -- "noretrieve" ACL keyword handler, NULL fixups]
  1544.  o  extensions.c: Fix losing null dereference in Debian checknoretrieve().
  1545.  o  extensions.c: #ifdef PARANOID -- disallow file deletion completely.
  1546.  o  ftpcmd.y: [Debian -- "bison" patch for linux just moved some decls
  1547.     around]
  1548.  o  ftpcmd.y: check PORT command against a bunch of things: being logged
  1549.     in, the client's source address, and the actual port number 1024 or
  1550.     greater.
  1551.  o  ftpcmd.y: require login before various other things work: PASV, RNTO
  1552.  o  ftpcmd.y: #ifdef PARANOID -- disable, trap, and log all SITE commands.
  1553.     Comments withheld about the lineage of whoever cooked up *that* gem.
  1554.  o  ftpd.c: [Debian -- support "noretrieve" ACL keyword; misc NULL fixups]
  1555.  o  ftpd.c: preload assorted variables with reasonable values.  Globalize
  1556.     guestpw and authuser and update them so all routines can access them
  1557.     for correct logging.
  1558.  o  ftpd.c: disallow "re-login".
  1559.  o  ftpd.c: #ifdef ANON_ONLY -- only allow anonymous logins.  Designed for
  1560.     the ftpd you hang out on your external machine.
  1561.  o  ftpd.c: various places -- if told not to use the "ftpaccess" file,
  1562.     genuinely don't use routines that deal with it at all.  [May save some
  1563.     of our butts when someone finds a bug in the extensions code!]
  1564.  o  ftpd.c: #ifdef SKEY, added s/key functionality.  The challenge emerges
  1565.     where the "Password required for username" response is normally sent.
  1566.  o  ftpd.c: add endspent() to the shadow code, per Marek M.
  1567.  o  ftpd.c: Flag attempts to exploit the trojanized 2.2c version.
  1568.  o  ftpd.c: #ifdef STUPID_SPRINTF -- break up big "sprintf" for xferlog
  1569.     into two pieces.  On some systems, sprintf is BROKEN.  If you're using
  1570.     xferlog and your ftpd crashes right after a transfer, you probably need
  1571.     this.
  1572.  o  ftpd.c: #ifdef PARANOID, disable file overwriting, with either "put" or
  1573.     "rename".
  1574.  o  ftpd.c: Fix an ACL bug in renamefrom().  Doing two renames in a row
  1575.     would bypass the setting in the ACL file.
  1576.  o  ftpd.c: call realpath() to get current wd.
  1577.  o  ftpd.c: close data ports upon exiting, and close old PASV port if told
  1578.     to open a new one.
  1579.  o  newvers.sh: include tiny little advertisement.
  1580.  o  makefiles/Makefile.lnx: Mostly Debian; add -static, remove -DDEBUG, put
  1581.     in the "bison fix".
  1582.  o  makefiles/Makefile.fbs: Add for FreeBSD 2.0; slight mod of "bsd".
  1583.  o  config/config.fbs: config.h for Freebsd 2.0.  Contains a hack to work
  1584.     around the fact that freebsd stdlib.h comes with a realpath() and the
  1585.     define in ftpd.c conflicts with it.
  1586.  o  config/config.lnx: Debian version, with the same realpath() hack added.
  1587.     Linux has trouble with this too, but in unistd.h.  Put "realpath" back
  1588.     into SRCS and OBJS definitions.
  1589.  o  pathnames.linux: From Debian.  Use this as a starting point for
  1590.     customizing pathnames.h on linux.  A remaining deficiency is that NONE
  1591.     of the sources even *try* to reference the /usr/include/paths.h that
  1592.     many systems now have.
  1593.  o  Version bumped to 2.4.2; no reason given but we can safely presume the
  1594.     reason was the confusion in version names in Stan's earlier releases.
  1595. ###########################################################################
  1596. Changes in 2.4.1-BETA-1: Released 13 May, 1995
  1597.     AKA 2.4.1-BETA
  1598.     AKA 2.4.2-BETA-1
  1599.     This version was announced and released as wu-ftpd-2.4.1-beta-1.tar, but
  1600.     other emails, and internal notes in later versions, refer to this version
  1601.     under all three names interchangably.
  1602.     If you have an original copy of 2.4.1-BETA-1, the WU-FTPD Development
  1603.     Group would like a copy.
  1604.  o  Added changes for Solaris 2.4 compatibility. Changed the flag from
  1605.     SOLARIS21 to SOLARIS and made the changes generic for all releases of
  1606.     Solaris.
  1607.  o  Added changes for UnixWare 4.2 compatibility. Added Makefiles and config.h
  1608.     header files. 
  1609.  o  Added ftruncate support routine for machines that don't have ftruncate, but
  1610.     do have chsize call.
  1611.  o  Added a timeout patch created by Dan Thorson at Seagate to keep the server
  1612.     from creating a zombie process when a PASV client never actually connects.
  1613.     NOTE: This patch is commented out since I could not get it to work
  1614.     correctly and I hope someone will be able to fix this before we go to
  1615.     release.  There was also another timeout patch that may be more suitable.
  1616.     Comments are welcome.
  1617.  o  Added patches to hostacc.c to insure that memory dynamically allocated with
  1618.     malloc() is not free()d more than once. Patch from Jaakko Hyvatti.
  1619.  o  Split the support/strcasestr.c into two files: strcaststr.c and strstr.c
  1620.     and altered the Makefiles to include the appropriate libraries in the
  1621.     support library.
  1622.  o  Stan Barber took over stewardship of the daemon using 2.4-academ as the
  1623.     baseline for future development on 6 May, 1995.  This ended a 13-month
  1624.     period where there was no maintainer at all!
  1625. ###########################################################################
  1626. Changes in 2.4-academ: Release date lost in the mists of time
  1627.     AKA 2.4.1-academ
  1628.     It is unknown whether Stan ever publicly released this version under
  1629.     either name.  Emails, and internal notes in later versions, refer to
  1630.     this version under both names interchangably.
  1631.     If you have an original copy of 2.4-academ, or 2.4.1-academ, the WU-FTPD
  1632.     Development Group would like a copy.
  1633.  o  Ported to BSDi.
  1634.  o  Changed the fnmatch.c program in the support directory to return values
  1635.     that corresponded with the manual page. This was not necessary to
  1636.     support BSDi since it has its own fnmatch, but this make it possible
  1637.     for other platforms to make use of these changes transparently.
  1638.  o  Changed the access.c program to do a case-insensitive search on the
  1639.     hostname without using fnmatch. This option is not supported by the
  1640.     bsdi or bsd-net2 fnmatch subroutine.
  1641.  o  Changed all uses of fnmatch in the src directory to use the correct
  1642.     return values.
  1643.  o  Added pathnames appropriate to bsdi to the pathnames.h file in the src
  1644.     directory. These are bracketed by appropriate #ifdef/#endif blocks.
  1645.  o  Changed the root level makefile to copy files when installing them
  1646.     instead of moving them.
  1647.  o  Created a set of root level makefiles for each supported platform. This
  1648.     will allow the ftpd to be installed exactly over the OS-based makefile
  1649.     if used generically.
  1650. ###########################################################################
  1651. Changes in 2.4: Rereleased on 6 January, 1997
  1652.  o  Documentation update to point to the new address for the list server at
  1653.     Washington University at Saint Louis.
  1654.  o  Corrected documentation error: this is version 2.4 not 2.2
  1655.  o  Prevent reception of SIGURG from resulting in a resumption back to the
  1656.     main program loop.
  1657. ###########################################################################
  1658. Changes in 2.4: Rereleased on 13 November, 1995
  1659.  o  Documentation update to point toward Stan Barber as the maintainer of
  1660.     WU-FTPD.
  1661. ###########################################################################
  1662. Changes in 2.4: Released on 13 April, 1994
  1663.  o  This marks the end of Byran D O'Connor's tenure as prinicple developer.
  1664.     With his graduation, grants funding development were not renewed.
  1665.  o  Removed some race conditions.
  1666.  o  Fixed a spelling mistake.
  1667.  o  Now uses sys/syslog.h on Ultrix systems.
  1668. ###########################################################################
  1669. Changes in 2.3: Released on 4 April, 1994
  1670.  o  Bump the version number to avoid confusing with Trojan version.
  1671. ###########################################################################
  1672. Changes in 2.2: Released on 1 April, 1994
  1673.  o  Fixed a bug in path processing of SITE EXEC commands.
  1674.  o  Rewrote parts of private.c parsing routine, fixing problems with
  1675.     overloading the definition of gid_t.
  1676.  o  Added support for class lists in separate file.
  1677.  o  Changed a couple of occurrences of stat() to lstat() in delete() and
  1678.     renamefrom().
  1679.  o  Changed #ifdef LOG_LOCAL7 to #ifdef FACILITY in ftpd.c
  1680. ###########################################################################
  1681. Changes in 2.1f: Released 25 March, 1994
  1682.  o  Fixed NeXT config problem with NGROUPS_MAX.
  1683.  o  Fixed multiple response bug with ftp|anonymous in /etc/ftpusers file.
  1684.  o  Fixed BUS ERROR on upload on Sun 4.1.x systems.
  1685. ###########################################################################
  1686. Changes in 2.1e: Released 24 March, 1994
  1687.  o  Fixed class determination code from failing after failed attempt.
  1688.  o  Moved ACCESS DENIED syslog messages to LOG_NOTICE from LOG_INFO.
  1689.  o  Fixed problems with NFS and server running as root.
  1690.  o  Fixed problems with APPEND/OVERWRITE.
  1691.  o  Patched SCO files to work with 3.2.4.
  1692.  o  Fixed problems with uid/gid's.
  1693.  o  Changed upload examples in ftpaccess.5 to be correct.
  1694.  o  Allow for escaped #s in the ftpaccess file.
  1695.  o  hostacc.c patches.
  1696.  o  ftpshut.c: fixed file open problem when shutdown not defined.
  1697.  o  Added acl_remove() to fix problems with dangling PIDs in PID files.
  1698.  o  Fixed bug with real users > limit hanging clients.
  1699. ###########################################################################
  1700. Changes in 2.1d: Release date lost in the mists of time.
  1701.     If you have an original copy of 2.1d, the WU-FTPD Development Group
  1702.     would like a copy.
  1703.  o  The changes for 2.1d were lost.
  1704. ###########################################################################
  1705. Changes in 2.1c: Released on 25 August, 1993
  1706.  o  Fixed stupid bug with non-initialized pointers in *_check() functions.
  1707. ###########################################################################
  1708. Changes in 2.1b: Released on 16 July, 1993
  1709.  o  Append now works again.  A previous fix to solved files not getting
  1710.     truncated properly had broken it.
  1711.  o  Double conversions were not working properly for some conversions.
  1712.  o  Minor HP-UX portability problems corrected.
  1713.  o  Minor Host Access case sensitivity bug fixed.
  1714.  o  syslog after chroot fixed for SunOS by addition of TCP version of
  1715.     syslog functions.  (It is syslog.c in the support directory.)
  1716.  o  Data General support added.
  1717.  o  ISC support added.
  1718.  o  Added "rename <type> <yes|no>" option to prevent renaming files.
  1719.  o  Fixed unsigned int comparisons to -1.
  1720.  o  Added ckconfig program for checking proper locations of config files.
  1721.  o  Changed syntax of "upload" command to include which ftp hierarchy it
  1722.     pertains.
  1723.  o  Fixed some documentation errors.
  1724. ###########################################################################
  1725. Changes in 2.1a: Released on 27 May, 1993
  1726.  o  Tabs were put back into the Makefiles for AIX.
  1727.  o  acl_join() did not open the pid file is pidfd was invalid.
  1728.  o  acl_join() did not unlock the pid file if user was already in there.
  1729. ###########################################################################
  1730. Changes in 2.1: Released on 12 May, 1993
  1731.  o  Replaced xferstats.
  1732.  o  Default was to not allow uploads ever.  This is backwards, if no upload
  1733.     keywords are given, it should act like a normal server.
  1734.  o  Double conversion stuff works now, but you know that already.  Included
  1735.     is a gzip2comp (in util) for converting from gzip format to compress.
  1736.  o  cwd_beenhere() now calls realpath(".", cwd) to figure out the path.
  1737.     This works for people in directories that are private.  That is that
  1738.     some component of their path is not readable by them.  (cwdir() fails
  1739.     in such a case.)
  1740.  o  In an upload command, trying to set a file mode of 0000 would fail.
  1741.     This is now possible.
  1742.  o  makedir() did not work properly for real users.  This has also been
  1743.     fixed.
  1744.  o  Fixed up support for NeXT and other systems.  I cannot test these
  1745.     things, so there are bound to be problems.
  1746.  o  In getgrent.c, removed the need for getgrent.c from the support
  1747.     library.  This caused problems with systems running yellow pages (NIS).
  1748.     All gids in the private file are now parsed before the chroot().  This
  1749.     gives us one less open file descriptor.
  1750.  o  For upload/truncate, STORE was not properly trunctating files when
  1751.     overwriting them.
  1752.  o  Upload failing with directories in makedir/put commands: STORE and
  1753.     MAKEDIR were failing when giving full path names.
  1754.  o  Multiple process ids were written into the pid-files when a failed
  1755.     login attempt was made.  This caused problems with usage counts.
  1756.  o  Added the %E magic cookie which gets replaced with the "email" string
  1757.     from the ftpaccess file.
  1758.  o  For the %F magic cookie: added trivial support for Solaris 2.1 (at
  1759.     least).  If you fix this for your system, send me a patch.
  1760.  o  The %N magic cookie did not work after the chroot().  The pid file has
  1761.     to remain open for the duration of the server's life now in order for
  1762.     this to work.
  1763.  o  In support/paths.h, removed the need for this file.  It caused more
  1764.     problems than it was worth.  The two #defines that were used were moved
  1765.     to src/pathnames.h
  1766.  o  upload * no dirs: you can now specify a directory that does not allow
  1767.     uploads but does allow the creation of directories.
  1768.  o  You can now get a listing of what aliases are available.  At the ftp
  1769.     prompt type "quote site alias".
  1770.  o  You can now specify a cdpath (like the csh variable).
  1771.  o  You can specify an email address for the maintainer of the archive.
  1772.     This string will be used for the %E magic cookie.
  1773. ###########################################################################
  1774. Changes in 2.0: Rereleased on 12 April, 1993
  1775.  o  Changed support/ftp.h to use the BSD copyright and remove the DEC
  1776.     copyright.  DEC's version was just a copy of BSD's.
  1777. ###########################################################################
  1778. Changes in 2.0: Released on 8 April, 1993
  1779.  o  guestgroup access no longer needs an entry in the secondary passwd file
  1780.     (~ftp/etc/passwd).  The home directory is now specified as
  1781.     "root/./home" For example:
  1782.     ftptest:<encrypted>:100:200:Guest User:/var/ftp/./incoming:/etc/noshell
  1783.     When ftptest logs in, it will chroot to /var/ftp and then chdir to
  1784.     /incoming (which is actually /var/ftp/incoming before the chroot).
  1785.     Since the directory in /etc/passwd actually points to the guest's home
  1786.     directory, they can use .forward files, etc.
  1787.  o  ftpshut program generates shutdown file for ftp server.  Works 
  1788.     similarly to shutdown(8).  See ftpshut(8).
  1789.  o  The conversion table has been moved to a separate file.  The fields
  1790.     are:
  1791.            %s:%s:%s:%s:%s:%s:%s:%s
  1792.            Field    Description
  1793.             1       strip prefix
  1794.             2       strip postfix
  1795.             3       addon prefix
  1796.             4       addon postfix
  1797.             5       external command
  1798.             6       types
  1799.             7       options
  1800.             8       description
  1801.  o  Added following abilites configurable in the ftpaccess file.  See
  1802.     ftpaccess(5).
  1803.         chmod            <yes|no>  <typelist>
  1804.         delete           <yes|no>  <typelist>
  1805.         overwrite        <yes|no>  <typelist>
  1806.         umask            <yes|no>  <typelist>
  1807.         upload           <dir>     <yes|no>  <owner>  <group>  <mode>
  1808.         passwd_check     <none|trivial|rfc822>  {<warn|enforce>}
  1809.         alias            <name>    <dir>
  1810.         path_filter      <typelist>  <msg>  <charset>  {<disallowed> ...}
  1811.  o  ftpcount no longer displays multiple listings for classes that have
  1812.     multiple "class ..." lines.
  1813.  o  Bryan D O'Conner took over as the principal developer for Release 2.
  1814.     This ended a 19-month period where no updates were released.  At this
  1815.     time the name was also shortened from wuarchive-ftpd to wu-ftpd.
  1816.     Bryan used BSD ftpd version 5.60 as his base, merging the changes from
  1817.     the earlier BSD ftpd Chris used.  BSD ftpd version 5.60 was the version
  1818.     included in the "Final BSD Release".  UUnet Technologies maintains a
  1819.     full copy of the final BSD release at ftp.uu.net.
  1820. ###########################################################################
  1821. Changes in 1.1: Released 23 September, 1991
  1822.     This was an interim release of wuarchive's modified FTP server.  It is
  1823.     believed to be the first public release of the daemon.
  1824.     There are indications of attempts to track BSD versions, through BSD
  1825.     6.14, but internal information in the releases lead me to believe these
  1826.     were local to the FTP site we found them at, and not official releases
  1827.     from Chris Myers.
  1828.  o  The changes for 1.1 were lost.  Most likely they were to merge the
  1829.     changes from the BSD version he first used (probably  5.59) and 5.60,
  1830.     or they were minor bug fixes which Chris felt no need to discuss since
  1831.     1.0 had not been publicly released.
  1832. ###########################################################################
  1833. Changes in 1.0: Believed not to have been publicly released.
  1834.     This is believed to have not been publicly released, but was the
  1835.     original version used to implement wuarchive.wustl.edu; the success of
  1836.     this version appears to have prompted the public release of version
  1837.     1.1 after some minor corrections.
  1838.     If you have an original copy of 1.0, the WU-FTPD Development Group
  1839.     would like a copy.  Probable release dates are between 3 December,
  1840.     1990, and 23 September, 1991.
  1841.  o  Some older clients cannot handle multi-line replies.  These can be
  1842.     disabled on a per-connection basis by using a dash (-) as the first
  1843.     character of the user's password.
  1844.  o  Added ftpaccess control file.  The following commands are available:
  1845.         limit   <class> <n> <times> <message_file>
  1846.         class   <class> <typelist> <addrglob>{ <addrglob>}{ <addrglob>}{ <addrglob>}
  1847.         deny    <addrglob> <message_file>
  1848.         loginfails <number>
  1849.         log     transfers <typelist> <directions>
  1850.         log     commands <typelist>
  1851.         readme  <path> {<when>}
  1852.         message <path> {<when>}
  1853.         banner <path>
  1854.         private <path>
  1855.         guestgroup  <groupname> [<groupname> ...]
  1856.         autogroup <groupname> <class> [<class> ...]
  1857.         compress <yes|no> <classglob> [<classglob> ...]
  1858.         tar <yes|no> <classglob> [<classglob> ...]
  1859.         shutdown <path>
  1860.     Refer to the CHANGES file in the release for a full description of
  1861.     these new features.
  1862.  o  Added the following command-line options:
  1863.         -a   Enable use of ftpaccess file (access file MUST exist if used)
  1864.         -A   Disable use of ftpaccess file
  1865.         -L   Turn on command logging (See note. Overridden by ftpaccess, if used)
  1866.         -i   Turn on file reception logging (overridden by ftpaccess, if used)
  1867.         -o   Turn on file transmission logging (overridden by ftpaccess, if used)
  1868.     NOTE: If the -L flag is used, command logging will be on by default as
  1869.     soon as the ftp server is invoked.  This will cause the server to log
  1870.     all USER commands, which if a user accidentally enters a password for
  1871.     that command instead of the username, will cause passwords to be logged
  1872.     via syslog.
  1873.     The -L flag is overridden by the ftpaccess file, if it is used --
  1874.     command logging options in the ftpaccess file take effect IMMEDIATELY
  1875.     upon entry of the USER command (before logging takes place).
  1876.  o  There are some extensions to the FTP server such that if the user
  1877.     specifies a filename (when using a RETRIEVE command) such that:
  1878.         True Filename      Specified Filename   Action
  1879.         ------------------ -------------------- ---------------------------------------
  1880.         <filename>.Z       <filename>           Decompress file before transmitting
  1881. <filename>         <filename>.Z         Compress <filename> before transmitting
  1882.         <filename>         <filename>.tar       Tar <filename> before transmitting
  1883. <filename>         <filename>.tar.Z     Tar and compress <filename> before transmitting
  1884.  o  The FTP server will attempt to check for valid e-mail addresses and
  1885.     chide the user if he doesn't pass the test.  For users whose FTP client
  1886.     will hang on "long replies" (i.e. multiline responses), using a dash as
  1887.     the first character of the password will disable the server's lreply()
  1888.     function.
  1889.  o  The FTP server can also log all file transmission and reception,
  1890.     keeping the following information for each file transmission that takes
  1891.     place.
  1892.         Mon Dec  3 18:52:41 1990 1 wuarchive.wustl.edu 568881 /files.lst.Z a _ o a chris@wugate.wustl.edu ftp 0 *
  1893.         %.24s %d %s %d %s %c %s %c %c %s %s %d %s
  1894.           1   2  3  4  5  6  7  8  9  10 11 12 13
  1895.         1 current time in the form DDD MMM dd hh:mm:ss YYYY
  1896.         2 transfer time in seconds
  1897.         3 remote host name
  1898.         4 file size in bytes
  1899.         5 name of file
  1900.         6 transfer type (a>scii, b>inary)
  1901.         7 special action flags (concatenated as needed):
  1902.             C   file was compressed
  1903.             U   file was uncompressed
  1904.             T   file was tar'ed
  1905.             _   no action taken
  1906.         8 file was sent to user (o>utgoing) or received from user (i>ncoming)
  1907.         9 accessed anonymously (r>eal, a>nonymous) -- mostly for FTP
  1908.         10 local username or, if guest, ID string given (anonymous FTP password)
  1909.         11 service name ('ftp', other)
  1910.         12 authentication method (bitmask)
  1911.             0   none
  1912.             1   RFC931 Authentication
  1913.         13 authenticated user id (if available, '*' otherwise)
  1914.  o  Chris Myers was the original author of wuarchive-ftpd.  He based his
  1915.     work upon the University of California, Berkeley, (BSD) ftpd, most
  1916.     likely version 5.59.
  1917.     The WU-FTPD Development Group has BSD ftpd versions 5.51 and 5.60 (both
  1918.     found at the UUnet FTP site).  An analysis of these versions shows
  1919.     Chris Myers used a version somewhere between them; most likely 5.59.
  1920.     If you have an original copy of BSD ftpd between these versions, dated
  1921.     between 8 May, 1989, and 12 April, 1991, we would like to examine a
  1922.     copy.
  1923. ###########################################################################
  1924. In the beginning there was the void.
  1925. And BSD said ...