CHANGES
上传用户:zibowangxu
上传日期:2007-01-04
资源大小:331k
文件大小:110k
-
- Copyright (c) 1999 WU-FTPD Development Group.
- All rights reserved.
-
- Portions Copyright (c) 1980, 1985, 1988, 1989, 1990, 1991, 1993, 1994
- The Regents of the University of California.
- Portions Copyright (c) 1993, 1994 Washington University in Saint Louis.
- Portions Copyright (c) 1996, 1998 Berkeley Software Design, Inc.
- Portions Copyright (c) 1989 Massachusetts Institute of Technology.
- Portions Copyright (c) 1998 Sendmail, Inc.
- Portions Copyright (c) 1983, 1995, 1996, 1997 Eric P. Allman.
- Portions Copyright (c) 1997 Stan Barber.
- Portions Copyright (c) 1997 Kent Landfield.
- Portions Copyright (c) 1991, 1992, 1993, 1994, 1995, 1996, 1997
- Free Software Foundation, Inc.
-
- Use and distribution of this software and its source code are governed
- by the terms and conditions of the WU-FTPD Software License ("LICENSE").
-
- If you did not receive a copy of the license, it may be obtained online
- at http://www.wu-ftpd.org/license.html.
-
- $Id: CHANGES,v 1.40 1999/10/17 00:50:22 wuftpd Exp $
- Changes in 2.6.0: Released 18 Oct, 1999
- o On sigpipe, always log a lost connection.
- o Added a log message on attempts to download files marked unretrievable.
- o The SITE NEWER feature has been disabled. A compile-time option has been
- added to re-enable it. See config.h.noac for more information on this.
- o With restricted-uid/gid, CWD to a non-existant directory would display the
- full pathname rather than just relative to the user's home. Actually, the
- fix catches most cases where this could occur, not just the CWD verb.
- o Fixed a bug in the restricted-uid/gid feature which could allow access
- outside the user's home directory in some cases.
- o Bumped MAXHST (max. hosts allowed on a line) for ftphosts from 10 to 12.
- Fixed a bug related to this which can cause the server to crash checking
- host access.
- o The internal ls (see below) was judged to be unready. It has been disabled
- by default but can be enabled with a compile-time option for those who wish
- to attempt to debug it (be warned, it has a lot of problems).
- o Split the "bad shell or user not in ftpusers" syslog message into two
- messages to prevent confusion.
- o Filename globs for LIST, NLST and SITE EXEC, as well as a few internal
- uses, are cleaned up before processing. For example: */./../* becomes
- just *. This prevents certain memory starvation DoS attacks.
- o Corrections for RFC compliance can break some clients. If possible, the
- broken client should be updated, but a compile-time option has been
- added. See the config.h.noac for more information on this.
- o Created doc/HOWTO directory and moved VIRTUAL.FTP.SUPPORT and
- upload.configuration.HOWTO there.
- o Add a README.AUTOCONF file describing the autoconf build in detail.
- o UC, Berkeley, has removed the requirement that all advertising material
- must include credit to them. Removed the clause from the LICENSE and
- the historical licenses in the COPYRIGHT file.
- o Added the email-on-upload feature from BeroFTPD. See the ftpaccess man
- page for defaults on these added ftpaccess clauses:
- mailserver <hostname>
- incmail <emailaddress>
- mailfrom <emailaddress>
- virtual <address> incmail <emailaddress>
- virtual <address> mailfrom <emailaddress>
- defaultserver incmail <emailaddress>
- defaultserver mailfrom <emailaddress>
- o Redhat added the -I option to disable RFC931 (AUTH/ident). Added to
- the baseline so Redhat users don't see a loss of a feature. Setting
- the timeout for rfc931 to zero will do the same thing in the ftpaccess
- file.
- o The test for whether restricted-uid/restricted-gid applied should have
- been done before the chroot so it used the system /etc/passwd and
- /etc/group files.
- o CDUP when you were already at the home directory, would complain about
- you being restricted (if you were). Instead it should give a positive
- reply, and do nothing. This makes it behave more like CDUP when you're
- not restricted to your home directory.
- o deny-uid and deny-gid were being tested for anonymous users. Bad move,
- it's too easy to forget to allow them. Use 'defaultserver private' to
- keep anonymous users away.
- o Correct the operation of the NLST command. Finally. mget should now
- work as users expect it to.
- o Prevent buffer overruns when processing message files.
- o Correct a reference through a NULL pointer when doing S/Key
- authentication and the user is not in the passwd file.
- o Check the return code from select() when setting up a data connection.
- Under some rare conditions it is possible that the select was called
- for an fd_set which has no members, hanging the daemon.
- o Ensure a pattern of "*" matches everything. The new path_compare (used
- on upload and throughput clauses in the ftpaccess file) sets the option
- FNM_PATHNAME, so:
- * matches everything
- /* matches everything
- /*/* matches /dogs/toto and /dogs/toto/photos but not /dogs
- o setproctitle() support added for UnixWare.
- o Removed all FIXES files. Merged their contents into this CHANGES file
- (the one you're reading now). The old doc/FIXES directory has been
- tar'd and will be placed in the attic when 2.6.0 releases.
- o Corrected an error in the MAPPING_CHDIR feature which could be used to
- gain root privileges on the server.
- o Added -V command-line option to View the copyright and exit.
- o Added the privatepw command and documentation.
- o Port for FreeBSD corrected.
- o Adding the LICENSE file to the baseline.
- o Added print_copyright function so our copyright is embedded in the
- executables.
- o WU-FTPD Development Group copyright headers added. Original Copyright
- headers moved into the COPYRIGHT file.
- o RCS Ids from 2.4.x removed and new templates added for wu-ftpd.org
- usage.
- o Make sure the signal context is restored when jumping out of signal
- handlers. This was causing signal 11 on some systems.
- o Cleaned up the how-to of setting up virtual hosting support.
- o Corrected header file dependencies.
- o Changed NLST to nlst, necessary as ftpcmd.c #defines NLST.
- o Tidied up virtual variables.
- o Changed so compiles cleanly on SCO OpenServer 5, UnixWare 2 and
- UnixWare 7.
- o Anonymous users could get in even though no class was defined for them.
- o Support for non-ANSI/ISO compilers has been removed. You MUST have and
- ANSI/ISO C compiler. This has been true for some time, all that has
- changed is the (incomplete) support for older (K&R) compilers has been
- removed.
- o Added Kent Landfield's NEWVIRT scheme for extensive virutal hosting.
- See the updated documentation on virtual hosting for details.
- o ftprestart has been added to the base daemon kit.
- o A buffer overrun in the ftpshut command has been corrected. Since, on
- most sites, the ftpshut command is only usable by the superuser, this
- is not considered a security issue. If you have installed ftpshut with
- suid-root permissions (not the default), then there is the possibility
- this overrun could be used to leverage root permissions.
- o Several new ftpaccess clauses have been added. These allow control of
- the various timeouts used within the daemon. The new clauses are:
- timeout accept <seconds>
- timeout connect <seconds>
- timeout data <seconds>
- timeout idle <seconds>
- timeout maxidle <seconds>
- timeout RFC931 <seconds>
- o Myriad places where inactivity timeouts were not being properly
- detected or handled have been corrected.
- The built-in directory listings, both the original NLST and the
- build-in LIST (ls), now detect inactivity. The original NLST did
- not which could lead to hanging daemons.
- C FILE handles for data connections are now always flushed, then
- the socket is shutdown cleanly before being closed.
- As a side effect, the daemon now more often properly detects
- incomplete transfers. This can lead, though, to the xferlog
- showing the correct byte count (meaning the daemon read or wrote
- that many bytes over the data connection), but still log the
- transfer as incomplete (meaning the socket did not properly
- shutdown so the client probably missed some data).
- o The daemon no longer attempts to replace the system's <arpa/ftp.h>
- header when compiling. Instead, it uses its own local copy at all
- times.
- o The daemon will now wait for the transfer to complete before sending
- 'Transfer complete' or similar messages. This improves the daemon's
- reliability for poorly written clients which take recipt of the message
- as indication the transfer has completed rather than reading until the
- connection closes.
- o Guest and anonymous logout was not recorded on Linux. Removed call to
- updwtmp and returned to old method of updating the lastlog.
- o Script "vr.sh" is no longer needed. The Development Group will not be
- releasing patches to upgrade; they can be obtained from CVS if needed.
- o "realpath_on_steroids" is no longer needed. Removed.
- o Use a custom version of fnmatch() which changes the rules for matching
- file and directory names. The most visible result of this is
- noretrieve and allow-retrieve are now much more flexible. See the
- ftpaccess manpage for examples.
- o Use the correct SPT_TYPE for FreeBSD 2.0 or later.
- o Correct the class= logic on the allow-retrieve clause.
- o Enhanced DNS extensions. This adds three ftpaccess clauses:
- dns refuse_mismatch <filename> [override]
- dns refuse_no_reverse <filename> [override]
- dns resolveroptions [options]
- o Corrected a reference in the manpage for ftpconversions to ftpd.
- o The string 'path-filter' is now used in the system logs to describe
- problems resulting from failing a path-filter check. The daemon used
- to just say 'bad filename' which was misleading to some people.
- o Added instruction on how to support PAM on Solaris. Right now this
- means hand editing src/config/config.sol and
- src/makefiles/Makefile.sol.
- o Checking that all platforms use config.h, src/config/config.isc was
- found to have forgotten to include the file.
- o A security deficency on SunOS 4.1, not having a working getcwd()
- function, has been corrected by using the provided function.
- Compilation bugs in the portable getcwd() function have been corrected.
- o The daemon will no longer hang attempting to close the RFC931 socket
- when the remote end is firewalled and does not respond to traffic for
- this protocol. This was determined to be inappropriate handling of
- SIGALRM; handling for this signal has been cleaned up throughout the
- daemon.
- o The daemon may now be built using GNU autoconf. This is in the early
- stages and not all platforms may be supported. The old build system
- will be maintained for at least the 2.6.0 release; until the major
- platforms are all known to be supported.
- o Two new ftpaccess clauses have been added. These allows the site admin
- to selectively allow PORT and PASV data connections where the remote IP
- address does not match the remote IP address on the control connection.
- The new clauses are:
- port-allow <class> [<addrglob> ...]
- pasv-allow <class> [<addrglob> ...]
- o The daemon now includes an internal 'ls' command.
- o Ported to Mac OS/X.
- 0 Added (limited) support for AFS and DCE user authentication. This is
- only know to work on AIX, and needs porting to other platforms. For
- now, this requires hand work to enable.
- o Added an ftpaccess clause to enable TCP keepalives. This clause is:
- keepalive <yes|no>
- o You can now specify the xferlog filename for the default server just as
- you can for the virtual hosts; in the ftpaccess file. The new clause
- is:
- xferlog <absolute path>
- o ftpaccess manpage cleaned up. Many typos corrected, some techincal
- changes. Indentation should now be correct.
- o Apache's .indent.pro to the src and support directories. Ran all *.c
- and *.h files through it. ftpcmd.y has been indented by hand. The
- code is now a lot more readable!
- o A bug in the parsing for the deny !nameserved ftpaccess clause has been
- corrected.
- o Technical corrections in the ftpd manpage.
- o Add util/recompress.c as a more generic version of gzip2cmp.c
- ###########################################################################
- Changes in 2.5.0: Released 25 May, 1999
- o Change the handling of wtmp for GNU libc to use the Os-provided
- function updwtmp().
- o Prevent some buffer overruns.
- o Fix permissions on some files installed by RPM, add the log rotation
- control file.
- o Change the seteuid() calls for fchown() and chown() for POSIXLY_CORRECT
- systems.
- o pid file locking in ftpcount (ftpwho) is now consistent with the way
- the daemon locks these files.
- o Cancel any pending alarm request to stop acl_remove() from being
- interrupted then called again via the SIGALRM handler, this should fix
- the flock on a bad file descriptor looping problem.
- o Use %m in syslog format strings in place of %s and strerror(), this
- simplifies #ifdefs.
- o For SCO, link ftpcount with libsocket, necessary as it now calls
- syslog().
- o Added Redhat's RPM SPEC file for building RPMs.
- o English corrections in ftpaccess manpage. Technical correction: the
- noretrieve/allow-retrieve clauses do NOT support regular expressions.
- o Move where ftpglob stuff is defined to avoid compilation errors on some
- systems.
- o Port to SGI Irix version 4 corrected.
- o Overwrite behavior on uploads has been made consistent with shell
- usage. The daemon does not change ownership or permissions on
- overwrite.
- o Corrected the PASV command to bind to the correct interface (local IP
- address).
- o Removed the OVERWRITE and UPLOAD defines from platform config files;
- they are defined in the main config.h header.
- o Issuing CWD without any parameters caused a signal 11, crashing the
- daemon.
- o Port to HP/UX corrected.
- o Added ERRATA file to discuss problems with getcwd().
- o Added a portable version of the getcwd() function for systems which do
- not have it or imcorrectly implement it. NextStep 3 uses this new
- function.
- o OPIE support was being disabled even though the proper command-line
- switches were being set. Corrected the use of opieverify().
- o The fatal() function was not declared void; this was causing problems
- with some compilers.
- o Port to Hitachi HI-UX corrected.
- o Some calls to fnmatch() were missing parameters.
- o Corrected the 'restricted' user feature. It now works well with most
- FTP clients.
- o Correct usage of -d vs -e in the install Makefile for a number of
- platforms.
- o You can now use negated hostnames/addresses on the class ftpaccess
- clause.
- o Added an ftpaccess clause to specify random text for the initial
- greeting:
- greeting text <message>
- o Corrected password encryption/checking for Digital Unix with C2
- security (SECUREOSF).
- o Merged the TODO file from the VR series with Stan's TODO file for the
- Academ betas.
- o Changed the various permission denial messages sent by the daemon to
- the client to make it clear the message originated from the server.
- o Ports to SCO, Solaris, uxw, ptx and isc corrected.
- o Use the newer SEEK_ defines in place of the old BSD L_ defines and
- removed the global definition of entry, each function should define it
- locally.
- o Removed an unnecessary lseek(L_SET) in ftpcount (ftpwho).
- o Link ftpcount and ftpshut with ${XXLIBS}.
- o Made strsep() definition consistent with BSD and Linux. Add strsep()
- definition to conversions.c.
- o Added #include <string.h> to ckconfig.c.
- o Replaced the _PATH_DEVNULL define with a #include of "pathnames.h" in
- popen.c.
- o Support long group access passwords if SecureWare or HPUX_10_TRUSTED
- are defined (using bigcrypt()).
- o Fixed a memory leak in restrict.c.
- o Digital Unix version 4 has a working getcwd(); use it instead of
- getwd().
- o Stop restrict_list_check() from walking off the end of name.
- o Added -x command-line option to mean 'log syslog+xferlog'.
- o Changed the log ftpaccess clause to allow logging transfers to both the
- syslog and xferlog. The log ftpaccess clauses now include:
- log syslog
- log xferlog
- log syslog+xferlog
- o Formation of the WU-FTPD Development Group on 1 April, 1999.
- 2.4.2-VR17 chosen as initial baseline for the daemon.
- ###########################################################################
- Changes in 2.4.2-VR17: Released 1 April, 1999
- o Gregory A Lundberg resigns as the de-facto maintainer of WU-FTPD. "And
- you thought I was joking."
- o VIRTUAL is now the default for Solaris; all Solaris systems support
- multiple interfaces (IP addresses).
- o Fixed complaints involving virtual_len reported by several beta
- testers.
- o Some of the 'C' source code in ftpcmd.y depended upon a particular
- behavior when ANSI/ISO does not define it. Corrected so all compilers
- will properly interpret the code.
- o Corrected the support for QUOTA on Solaris.
- o The GNU EGCS 'C' compiler is broken. A quick check and we can avoid
- the brokenness.
- o Port to Ultrix corrected.
- o The default shell on NextStep wants -d instead of -e. Changed to test
- instead of [] since that's more portable; will probably do the same to
- other systems in a future release.
- o MNTMAXSTR was possibly undefined on Digital Unix 4.0 even when not
- using QUOTA_DEVICE, causing compilation errors.
- o Added daemonaddress to the ftpaccess manpage.
- o Added a note from Chad Price <cprice@molbio.unmc.edu> in src/logwtmp.c
- about the brokenness of Solaris' last command.
- o It turns out that not all SunOS 4.1 boxes actually have a getcwd()
- function.
- o The labels unix and __unix__ are depricated on BSD, effecting the logic
- for the reponse to the SYST command.
- o Added an appnote about OPIE. See src/makefiles/Makefile.lnx for a way
- to automatically have the daemon use OPIE. Send your Makefile if you
- do something similar for your system.
- o Added an appnote about a problem experienced with Trusted Solaris.
- o Added doc/misc directory to start collecting interesting tidbits which
- may help people get their servers going.
- o The FIXES files were really cluttering up the base directory. Moved
- them to a directory under doc.
- o The 'log security' ftpaccess clause covered all but a few messages
- about filesystem operations. It now covers the few it missed.
- o Under some conditions _PATH_WTMP was not being set in pathnames.h
- o QUOTA is now supported for Solaris.
- o Trusted Solaris needed additional functionality in ftpcount (ftpwho).
- o File locking in ftpcount (ftpwho) was never completed.
- o Port to HP/UX corrected.
- o 'make install' now accepts DESTDIR to install into a directory
- structure other than the root file system. A number of other optional
- parameters are available to override the default ownership of the
- installed files. Missing directories are automatically created. File
- permisssions were reduced to the minimum necessary.
- o Dead code removed.
- o The Makefile for Linux now automatically detects if PAM is installed
- and compiles the daemon to use it.
- o Fix an uninitialized variable in ftpshut which could effect the way the
- command works with default values.
- o Suppress trailing blanks from the output of a wide 'ps' in the ftpcount
- (ftpwho) command. Just making things pretty.
- o Updated upload.configuration.HOWTO to describe more of the
- configuration having to do with class= rules and overwrite, delete and
- rename clauses.
- o Added vers.c and edit to 'make cleandir' in the src directory. These
- files are automatically created during the build process.
- o Added a restrict_check(".") in the LIST command for consistency with
- the remainder of the code in ftpcmd.y.
- o Corrected the 'restricted' users feature so it would play nicely with
- web clients and the way some of them mis-interpret FTP URLs.
- ###########################################################################
- Changes in 2.4.2-VR16: Released 4 March, 1999
- o The Makefile for hiu had a typo and would not install two manpages.
- o Merged 2.4.2-BETA-18-VR15 with 2.4.2 (final) from Academ. Gotta love
- CVS. :)
- o Gregory A Lundberg becomes the de-facto maintainer of WU-FTPD pending
- the formation of the WU-FTPD Development Group.
- ###########################################################################
- Changes in 2.4.2: Released 26 Febraury, 1999 (not announced)
- o With the release of 2.4.2, Stan Barber steps down as the maintainer of
- WU-FTPD.
- o Documented that 'upload .. no' allowed directory creation. See
- doc/examples/ftpaccess.heavy as an example. [Ed: This is not the case
- for the VR series, but I'm including the change anyway.]
- o Clarification in the manpage for ftphosts: ftp or anonymous listed in
- the file will disable anonymous ftp access.
- o Possible pointer overrun in acl.c parsing ftpaccess corrected.
- o Literal constant in ftpcmd.y changed to static to reduce program size.
- o ftpcount/ftpwho interpretation of start/stop times made to match the
- way the daemon actually does it.
- o setproctitle() in ftpd.c updated to avoid a buffer overrun and handle
- low memory conditions; SCO corrections.
- o Possible buffer overrun parsing 'virtual root' and 'virtual logfile'
- corrected.
- o A timeout timer was being reset at the wrong point during STOR.
- o Corrections for Sun/Solaris paths in pathnames.h.
- o Makefile for DEC/Unix (dec and du4) changed from cc -std1 to cc -std.
- o Correction in syslog support for DEC/Unix in support/syslog.c.
- o util/xferstats corrected to parse your local domain name rather than
- just assuming you're academ.com.
- o Other changes are white-noise or simply for style and do not effect the
- operation of the daemon in any way.
- ###########################################################################
- Changes in 2.4.2-BETA-18-VR15: Released 1 March, 1999
- o Provided a means to completely disable anonymous FTP access. Done as a
- compile-time option, see config.h
- o NLST with a directory ending with / doubled up the slash. This had
- been there for years.
- o Completed large file support for AIX. To enable Large File support,
- use './build aix LF=YES'
- o The stock compiler on SunOS 4.1 is breaindead. Use gcc instead. Also
- found during trials that getcwd() works fine on s41 and enabled it.
- Found that on a SunOS 4.1 using NFS in the FTP area, fchdir() doesn't
- always work so if you have problems, #define HAS_NO_FCHDIR to see if
- that helps.
- o Complete the changeover from SCO Unix to SCO OpenServer 5.
- o We really don't need to #undef NO_PRIVATE twice in config.h .. it just
- confuses things.
- o The -X command-line option and 'log syslog' were not working as
- documented. The switch was re-initialized by the 'log' clauses.
- o Additional corrections for AIX 4.2 and large file support. Earlier
- versions of AIX may need to edit support/makefiles/Makefile.aix if they
- don't have snprintf() or strdup().
- o Corrected a case where _PATH_XFERLOG may not be defined at all in
- src/pathnames.h.
- o Code cleanup for the xferlog print which was changed in VR14.
- o A typo selected the wrong HELP_CRACKERS patch in one place.
- o Protect a #define conflict on NetBSD with #ifndef.
- o The reason the daemon won't work on AIX is the size_t_blksize change
- made as an experiment way-back-when. Backed out that change. Let's
- see what happens.
- o Corrected an error which caused AIX to sometimes report 0 for the
- filesize when a download begins.
- o There were a number of places there was no check for errors from
- alloc()/malloc()/calloc().
- o defumask was causing problems on HPUX. Another case of mis-matched
- definition/extern.
- o There were several places where int was being used and size_t was
- correct. This may, or may not, fix problems getting the daemon to work
- on AIX.
- o Added the ability to restrict users to their home directories. This
- has the effect of doing a "soft" chroot and is best used with guest
- users. Several new ftpaccess clauses were added to support this:
- restricted-uid <uid-range> [...]
- restricted-gid <gid-range> [...]
- unrestricted-uid <uid-range> [...]
- unrestricted-gid <gid-range> [...]
- o Sun forgot to include RAND_MAX in their implementation of
- srand()/rand() on SunOS 4.1. Choose a (hopefully) correct value. This
- has dire consequences for PASV port randomization of it's wrong.
- o The Perl script for xferstats provided with the daemon calls for
- /usr/local/bin/perl when Perl is usually in /usr/bin/perl. You
- shouldn't be using this script anyway, get Phil's version; it's MUCH
- better.
- o Corrections to QUOTA support.
- o OPIE can now use the OPIE access file, allowing some users to user
- password authentication while requiring others to use OPIE.
- o Wildcards (*) on hostmatch used to work and don't any more. The were
- removed because the original method was insecure. Corrected the
- problem and re-instituted this feature without the potential security
- problems of the old method.
- o /etc is cluttered enough but the config files make it harder than it
- has to be to use /etc/ftpd for the daemon configuration files. Updated
- config files to test for a value before setting the default. Look in
- src/makefiles/Makefile.lnx for an example of how to automatically test
- the target for this, or just add -DUSE_ETC_FTPD to COPTS in your
- Makefile.
- ###########################################################################
- Changes in 2.4.2-BETA-18-VR14: Released 15 February, 1999
- o The correction for SCO had an effect on Digital Unix with C2 Security
- (SECUREOSF).
- o Fixed some dumb coding mistakes in realpath.c
- o Port for NextStep 3.3 corrected.
- o Fixed a compile error for quotas on Linux; seems Redhat or someone
- forgot to #include a file deep in the OS runtime headers.
- o Corrections for SecureWare systems so the daemon can build on SCO
- OpenServer 5.
- o There were points where multiple replies due to realpath() returning an
- error could hang the remote client. Removed the extra replies.
- o The size of a buffer used by the *_realpath() functions is BUFSIZ and
- should be MAXPATHLEN. Actually, this was the case many places in
- extensions.c.
- o The anti-NOOP code didn't work. The timer was being restarted too
- often.
- o The reason debug doesn't work in daemon-mode is it's initialized too
- late.
- o Back in VR8 I turned off the sleep slowing down password guessers
- because there are times when signals can be off when the sleep occurs
- and that would hang the daemon. Let's fix that and re-enable the
- sleep.
- o Still more buffer-overflow points which can cause problems. This time
- it's in the writing of the xferlog. Sigh. This really should be
- rewritten.
- o Disallow PASV connections from IP addresses different than the control
- connection. This is not a complete fix, but it will stop connection
- theft where the attacker is on a different machine than the victim-
- client.
- o There is an old, well-known PASV port race designed into the FTP
- protocol. To make it harder for this race to succeed, do not depend
- upon the underlying system to randomly choose the PASV port. The only
- correct solution to this problem is a client-side issue: open the
- connection before issueing the transfer command.
- ###########################################################################
- Changes in 2.4.2-BETA-18-VR13: Released 1 February, 1999
- o Added module loadavg.c stripped from Sendmail. This is not currently
- compiled. The module is for testing connection limits based upon
- system load, which is planned for a future version of the daemon.
- o Fixed a bug where access.c was logging garbage because of bad linkage
- to ftpd.c, this appeared on a number of syslog messages instead of the
- remote user identification (via RFC 931).
- o Added and ftpaccess clause to listen on a single IP address instead of
- INADDR_ANY. This is incompatible with virtual host support as things
- now stand and will require a major rewrite to fix. I needed it for a
- specific site and decided to leave it in. The new clause is:
- daemonaddress <address>
- o Fixed a bug in the 'connection from' message. The AUTH (RFC 931) was
- too late and the remote address and host name hadn't been determined
- yet.
- o Fixed a bug in the quota support which caused a crash if there was no
- file support (/etc/fstab /etc/mtab) on some systems.
- o Added documentation for class= phrases missed in VR12 and promised for
- this release.
- o The realpath fix in VR12 for NFS had an off-by-one.
- ###########################################################################
- Changes in 2.4.2-BETA-18-VR12: Released 1 January, 1999
- o Added a missing library building for SGI.
- o Added a few small tweaks for building on NetBSD.
- o Added a compile-time option to suppress syslog messages about pid locks
- forcing a sleep.
- o Preload the ftpaccess file before becoming a daemon. This can have a
- big impact on the performance for busy sites. It also loads before the
- chroot command-line option so the /etc/ftpaccess file does not need to
- be in the protected area.
- o The ftpwho and ftpcount commands internally use ps(1). Appearently, on
- at least Linux, there's a move afoot to change the ps(1) command so it
- no longer accepts dashes on the command-line options. How annoying.
- Ah well, if the target is Linux, use ps(1) without dashes to make the
- silly command shut UP!
- o The cleanup in the last patch also cleared up some potential problems
- with the upload clause. The daemon is no longer critically sensitive
- to minor formatting errors on this clause.
- o Added 'class=' parameter for noretrieve, allow-retreieve, path-filter,
- delete, umask, chmod, overwrite, rename and upload clauses. Cleaned up
- the functions a bit for readability.
- o Port for Digital Unix 4.0(b) corrected.
- o Corrected a coding error which prevented proper use of the
- address:netmask form for access control.
- o Corrected problems with NFS and the new realpath code in VR10. Some
- problems with several security models and NFS have been corrected.
- ###########################################################################
- Changes in 2.4.2-BETA-18-VR11: Released 1 December, 1998
- o Corrected a problem with CWD when no parameter is given and the user is
- anonymous or guest. The command should work but returns an error
- instead; the error reveals the underlying file system. CWD with no
- parameter should work like CWD ~.
- o Correcte problems with the new realpath.c on SunOS. Basically, the
- getcwd() function on SunOS is too buggy to use so we had to switch to
- getwd instead. SunOS has joined AIX as systems which do not provide
- the runtime support needed to avoid all buffer overruns in realpath().
- o Changed the lslong and lsshort ftpaccess clauses to support more
- complex command lines. Added lsplain to modify the default 'ls'
- behaviour.
- o The byte count for ASCII mode file reception was off by a few
- characters. This bug had been there for a very long time.
- o A bad extern in ftpcmd.y caused garbage to be logged for the
- remoteident.
- o initsetproctitle was once again causing signal 11 crashes. Moved the
- call further up yet again and they're not happening.
- o Added an option to completely disable PASV mode and/or PORT mode.
- o Added syslog message if started as a standalone daemon and there is no
- ftpaccess file being used.
- o Linux libraries now define some paths already in src/pathnames.h so we
- need to #include <paths.h> first. Did this in config/config.lnx.
- o Linux library includes no longer #define MAXMNTENT so if it's not there
- #define it in extensions.c until someone has the time to fix this
- right.
- o Added -r option to chroot the daemon during startup.
- ###########################################################################
- Changes in 2.4.2-BETA-18-VR10: Released 1 November, 1998
- o There was a buffer-overrun in the realpath function. Imported the
- FreeBSD realpath() function to correct this error.
- o The Perl xferstats wasn't updated to match the new xferlog format with
- the new completion-code field on the end.
- o AUTH (ident) the remote user during login. Record the results in the
- syslog.
- o RFC-931 (AUTH/IDENT) was finished up. The log messages now show the
- RFC-931 user if one is known.
- o Support for some Hitachi flavors of Unix was added.
- o Major cleanup of build and the makefiles.
- o A number of minor fixes, mainly having to do with differences between
- ANSI/ISO and K&R C.
- o Fixed several points of confusion when some things (like size_t) are
- not the same size as an int.
- o Added the -Q command-line option to suppress access to the PID files.
- NOTE: Without PID files, the limit ftpaccess clause cannot determine
- the number of users in the given class.
- o Added a -p option which allows the port to be specified for the control
- connection. Command-line options are also provided to allow both the
- data and control port numbers to be specified.
- o The daemon did not use the correct method to choose the port for the
- data connection in PORT mode. The daemon will look up the data port in
- /etc/services.
- ###########################################################################
- Changes in 2.4.2-BETA-18-VR9: Released 15 October, 1998
- o Cleaned up a few large, confusing 'if' statements in the code.
- o Changed my mind. Regular expressions don't work well unless there's
- some way to tell they're there. Backed out all regular expression
- matching for file/path names in the ftpaccess file. This issue will be
- re-evaluated in a later version. Globbing still works everywhere it's
- reasonable to use it.
- o Dead code removed.
- o Noted a number of places where strcmp was used but strcasecmp would be
- more appropriate. This makes the ftpaccess file easier to maintain
- since small typographical errors won't matter so much any more.
- o Added regular expression matching to deny-mail.
- o There were reports of errors on AIX with malloc. Testers confirm
- problem in send_data(). Working on the supposition that the problem is
- data alignment: the 'blksize' is off_t and malloc() wants a size_t;
- added a conversion step which should eliminate the problem.
- o Fixed another discrepancy between the ANSI and K&R function
- definitions.
- o Support globbing/wildcards throughout ftpaccess file for file and
- directory comparisons.
- o Added for OPIE (One-time Passwords In Everything). You will need OPIE
- libraries installed to use this. OPIE is available from
- ftp://ftp.inner.net/pub/opie/opie-2.32.tar.gz
- o The extensions for 'absolute' or 'relative' pathname comparison were
- not case-insensitive. They should have been.
- o Add 'allow-retrieve' to allow retrieval of files which would be denied
- by earlier 'noretrieve' clauses. The ftpaccess clause is:
- allow-retrieve [absolute|relative] [class=<classname>]... [-] <filename> ...
- o Support regular expressions in noretrieve.
- o Port for Digital Unix with C2 Securuty (SECUREOSF) corrected.
- o Allow access control commands to use address/netmask or CIDR.
- o Corrected a hostname matching bug.
- o Allow host names instead of IP numbers.
- o Reduce the number of DNS lookups needed for virtual host support.
- o xferlog now indicates success or failure.
- o realpath() needs root permissions to prevent errors under certain
- security models.
- ###########################################################################
- Changes in 2.4.2-BETA-18-VR8: Released 1 October, 1998
- o AIX complained (rightly so) about several problems with the source
- which prevented compiling using K&R.
- o DEC Unix 3 complains about the function 'main()' having more than two
- parameters for STRICT ANSI/ISO C compliance. This warning can be
- safely ignored.
- o Corrected several minor problems and fixed errors in syslog in the
- support/makefiles/Makefile.dec and src/makefiles/Makefile.dec which
- prevented bulding on DEC Unix 3.x.
- o Added USE_VAR and USE_ETC for IRIX (sgi) configuration.
- o Added two more virtual-server features so we can deny anonymous login
- on a virtual servier and so we can allow specified users to log in even
- though they're real or chroot'd to another directory. Also added a
- feature to deny real, guest or anonymous on the default server. The
- new ftpaccess clauses are:
- virtual <address> private
- virtual <address> deny <username> [<username> ...]
- virtual <address> allow <username> [<username> ...]
- defaultserver private
- defaultserver deny <username> [<username> ...]
- defaultserver allow <username> [<username> ...]
- o Testing CLOSED_VIRTUAL_SERVER pointed out a bug in user() .. the
- attempt to sleep to slow down password guessers can't work since
- signals are off. The daemon sleeps forever. This has been there for
- years.
- o Ported to Digital Unix 4.
- o If no 'ftp' user existed, the HELP-HACKERS patch failed to send a
- response which would hang the ftp client.
- o BSD auth failures crashed the daemon. This looks like it's been a
- long-standing problem.
- o An earlier version changed the behavior of the xferlog to always show
- the full, real path for the file. This should have been a compile-time
- option.
- o More typos in ftpaccess.5, some mine, some have been there for ages.
- o Added the ability to disable all DNS lookups in the daemon. I've done
- this as a compile-time option and included a discussion of the risks
- and benefits in the config.h for the daemon. Enabling this feature can
- be a win for busy sites because it can reduce the time required to make
- a connection as well as eliminate syslog messages caused by bad DNS
- management at the remote sites.
- o Found another undocumented feature. If the <addrglob> on a 'class' or
- 'deny' clause starts with a slach (/) it names a file which contains
- any number of additional <addrglob> entries per line and any number of
- lines. Updated manpage.
- o Add 'greeting' clause to control the amount of information the server
- gives out on the greeting. The new ftpaccess clause is:
- greeting full|brief|terse
- o Added 'email' option for the 'virtual' clause so we may set this as
- well. The new ftpaccess clause is:
- virutal <address> email <string>
- o Added the restriction that no real users may log in on the virtual
- server.
- o If a guest logs in on the virtual server deny the login unless their
- chroot point is the virtual server's root. This restricts guest logins
- to the site admin and anonymous users.
- o Added 'hostname' option for the 'virtual' clause so we may set the name
- of our multi-homed ftp sites as we can with our default site. The new
- ftpaccess clause is:
- virtual <address> hostname <string>
- o Added an ftpaccess clause to limit total connect time. The new clause
- is:
- limit-time {*|anonymous|guest} <minutes>
- o Disallow certain email addresses as passwords for anonymous ftp. The
- new ftpaccess clause for this is:
- deny-email <case-insensitive-email-address>
- o Fix a bug in the parsing of ftpconversions which I found when I put in
- the new conversions for checksums. Turns out this was the same as the
- bug I fixed in VR4 parsing the ftpgroups file.
- o Cleaned up some of the cross-platform user authentication code for
- SECUREOSF.
- o Modify the password cryptography for C2 Digital Unix.
- o Moved 'retrieve_is_data' to be always compiled into the code since it
- was needed for SITE CHECKSUM.
- o Add site-exec-max-lines ftpaccess clause. This clause makes the limit
- on output lines from SITE EXEC configurable. The default is a 20-line
- limit, which was the old compiled-in limit. The new ftpaccess clause
- is:
- site-exec-max-lines <number> [<class> ...]
- o Added IGNORE_NOOP as a new compile-time option. It is now the default.
- o Added 'SITE CHECKMETHOD' and 'SITE CHECKSUM'.
- SITE CHECKMETHOD [CRC|POSIX|MD5|RFC1321]
- Sets or displays the current check method. If no parameter is
- given, displays the current method; otherwise the method is set to
- the given algorithm. CRC and POSIX are equivalent and are the
- output of the GNU cksum(1) utility. MD5 and RFC1321 are equivalent
- and are the output of the GNU md5sum(1) utility. The default check
- method is RFC1321 (MD5).
- SITE CHECKSUM [<file>]
- Calculates the checksum for the named file. If no file is given,
- the last file transferred (uploaded or download) is used. If no
- file has yet been transferred, reports an error. The current
- CHECKMETHOD is used to calculate the checksum.
- New ftpconversions: .crc and .md5
- Two new file conversions were added to the example ftpconversion
- which allow using GET to retrieve the CRC or MD5 checksums for
- files.
- NOTE: SITE CHECKSUM requires the installation of two additional
- programs in the ~ftp/bin directory. These programs have the same
- requirements as the external ls(1) program also normally required
- in that directory. For systems without these programs, or which
- require building new copies, the GNU textutils package should be
- used. This package is available at ftp://ftp.gnu.org/pub/gnu/ the
- current version at the time of this writing is
- textutils-1.22.tar.gz
- ###########################################################################
- Changes in 2.4.2-BETA-18-VR7: Released 15 September, 1998
- o Transfer limits tesed the wrong values for files uploaded to the
- server.
- o Added several new log messages missed in other versions having to do
- with filesystem change attempts.
- o Extended logging for rejected or denied functions such as delete,
- rename.
- o The QUOTA logic for BSDI doesn't match what's provided by the system.
- o My label 'slimy_hack:' appearing just before a '}' causes some
- compilers to belch. I guess some are more ANSI/ISO than others. Made
- a quick fix which ought to make them shut up until I can rewrite pass()
- to make the label go away.
- o The include for 'mntent.h' isn't needed unless QUOTE_DEVICE is defined.
- This caused problems on BSDI. Moving the include to only appear for
- systems which use QUOTE_DEVICE.
- o The HELP_CRACKERS patch was too agressive and, if message files were
- defined for 'deny' and 'limit' could tickle bugs in ftp clients. The
- patch is backed off to drop the connection immedeately if it violates
- 'deny' or 'limit'.
- o Extended upload and noretrieve to have an optional parameter which
- specifies whether the named file/directory is interpreted as an
- absolute name or relative to the current chroot'd environment.
- o Don't respond to *ANY* commands except USER, PASS and QUIT until the
- remote user logs in successfully.
- o Added PARANOID check to deny login if a real user's home directory is
- bad. Something's bunged up in /etc/passwd, why trust it?
- o Extended logging for rejected and failed login attempts.
- o Fixed a bug in popen which can cause segmentation faults. It's unknown
- if this is exploitable (it doesn't look like it is to me). It's been a
- problem for a long time.
- o Fixed a typo in the ftpaccess manpage (What, just one? Come on!)
- o Traffic counters weren't protected by TRANSFER_COUNT in some cases.
- o The 'daemon' variable conflicts with a 'daemon()' function in some
- runtimes. Renamed.
- o Missing <grp.h>. Gotta love Linux's grab-one-get-it-all method for
- defining system headers, don't ya? Grrr.
- o DAEMON always includes <sys/termio.h>, it was needed until VR6 removed
- the attempt to detach from the controlling terminal.
- o main() is declared void; that's not ANSI, it's just stupid.
- o routevector.c uses ulong instead of u_long. ulong doesn't exist on
- many systems.
- o defumask caused a data alignment problem on HP-UX 10.
- ###########################################################################
- Changes in 2.4.2-BETA-18-VR6: Released 26 August, 1998
- o Fixed handling for the message clause so login and cwd= work as
- expected.
- o The daemon responds differently in some cases when it's denying access.
- This could be used by attackers to determine the validity of some user
- names on the target system. NOTE: the 331 response for some systems,
- notably BSD S/Key or other challenge/response systems, may differ from
- the 331 response given. I don't have access to those systems to check
- out the differences. If you do, and work out how to hide the access
- refusal until after the password challenge, please forward it to me.
- o The upload clause should use realpath on the home directory to be sure
- it matches. Otherwise, real users with /./ in their path will need
- their upload clause to lexically match the home directory entry in
- /etc/passwd. This was not a big issue until I added realuser.
- o Fixed a bug with realpath, a missed condition. If chroot'd to '/' the
- xferlog shows '//' at the start of the filename.
- o Added the ability to force all UID/GID in a range to be treated as
- guests. The ftpaccess clause for this are:
- guestuser <username> [<username> ...]
- realgroup <groupname> [<groupname> ...]
- realuser <username> [<username> ...]
- o Disallow UIDs and GIDs by numeric range. This can obviate the need for
- /etc/ftpusers. The ftpaccess clauses for this are:
- deny-uid <uid-range> [...]
- deny-gid <gid-range> [...]
- allow-uid <uid-range> [...]
- allow-gid <gid-range> [...]
- o Added 'guest-root' to select directory based upon guest UID. The new
- ftpaccess clause is:
- guest-root <root-dir> [<uid-range>]
- o Added 'anonymous-root' to select chroot directory based on class of
- anonymous user. The new ftpaccess clause is:
- anonymous-root <root-dir> [<class>]
- o Missed a spot where "*" should be matched for the <root-dir> in an
- upload clause.
- o Fixed a silly bug in the "rename" clause.
- o Change the defaults to deny upload, and other site-modification things,
- for anonymous users.
- o Some systems, notably Solaris, have problems with the code the
- standalone daemon mode used to attempt to detach from the terminal
- session. This was in the original patch. Upon thinking about the
- problem, I see no reason to keep the code arround. If you need this
- feature, use 'nohup' to run the daemon.
- o Standalone daemon mode (in VR4) missed including a header.
- o Added '-VR6' to version string in newsvers.sh. This will be updated
- with all future versions.
- ###########################################################################
- Changes in 2.4.2-BETA-18-VR5: Released 15 August, 1998
- o Cleaned up some unneeded blank lines sent in responses.
- o Added a message to show total traffic counts on the response to QUIT.
- o Added file counts, corrected missed bytes, added counts to STAT
- command.
- o Added detail counters and ftpaccess clauses to limit the user's ability
- to upload/download files based on these. The new ftpaccess clauses
- are:
- byte-limit [<raw>] <in|out|total> <count> [<class>]
- file-limit [<raw>] <in|out|total> <count> [<class>]
- o Restrict throughput for network load management. The ftpaccess clause
- for this is:
- throughput <root-dir> <subdir-glob> <file-glob-list> <bytes-per-second> <bytes-per-second-multiply> <remote- glob-list>
- o Added 'tcpwindow' to configure TCP window size for performance
- tweaking. The ftpaccess clause is:
- tcpwindow <size> [<class>]
- o Provided address remapping for PASV mode to allow daemon to run behind
- IP-address translating firewalls (NAT). If you use this with virtual
- hosts, let me know how it goes; I think it works, but let me know if it
- needs extensions for virtual hosts. The ftpaccess clauses for this
- are:
- passive address <externalip> <cidr>
- o Limit PASV port ranges. The ftpaccess clause for this is:
- passive ports <cidr> <min> <max>
- o The original idea for realpath when it was included in the source kit
- was that it would provide missing functionality on systems where it was
- missing or replace existing functionality on systems where it was
- already present. The VR versions presume the daemon will always use
- the included realpath function.
- ###########################################################################
- Changes in 2.4.2-BETA-18-VR4: Released 30 July, 1998
- o Added 'defumask' to specify umask values by class in ftpaccess. The
- ftpaccess clause is:
- defumask <umask> [<class>]
- o Added the ability to specifiy groups which have no password. You'll
- still need to SITE GPASS, but just send no password.
- o Fixed possible bugs if the ftpgroup file is malformed.
- o Allow numeric UID and GID values. On systems with large numbers of
- users and a large number of upload clauses, the daemon can take a
- significant period to process the ftpaccess, passwd and group files.
- Effected ftpaccess clauses include: upload, guestgroup and autogroup.
- o The following problems were noted during testing:
- - Issuing PORT prior to login changes the state of the daemon
- - Issuing PASV after PORT does not change the mode reported by STAT
- - Illegal PORT commands change the state of the daemon
- This turned out to be two problems: PASV mode was being reset by
- rejected PORT commands, and PASV mode wasn't reseting the state
- completely after setting up a data connection.
- o HELP PORT indicated only 5 bytes were needed. Six are.
- o Added MAPPING_CHDIR config option to support CWD working like cd
- command in most Unix shells; the PWD shown is the logical path rather
- than the physical path.
- o Added syslog messages for more stuff. MKD, RMD, CHMOD and RNTO now log
- as DELE has.
- o Added new command-line option to run in standalone daemon mode. This
- is a win for busy sites but not the big win it could be if it pre-
- loaded the ftpaccess file into memory. Also, at this point, the
- standalone mode loses the tcpwrappers functionality which is available
- when running from inetd.
- o The mod to realpath for VR3 wasn't complete. This was mainly visible
- when logging a deletion message.
- ###########################################################################
- Changes in 2.4.2-BETA-18-VR3: Released 15 July, 1998
- o Added -w and -W to enable (default, -w) or disable (-W) recording user
- login and logout for ftp sessions in wtmp.
- o Noticing 'guestserver' made me look. There are two other undocumented
- ftpaccess clauses: 'lslong' and 'lsshort'. Man page updated.
- o While researching 'nice' came across an undocumented ftpaccess clause
- 'guestserver'. Man page updated.
- o New ftpaccess clause 'nice' to adjust process priorities based upon the
- class. The new ftpaccess clause is:
- nice <nice-delta> [<class>]
- o The upload clause is extended to allow '*' for <owner> and <group> so a
- single upload clause can work for all users. For example:
- upload /home/ftp /private/*/incoming* yes * * 640 nodirs
- can be used to create private upload areas for every user.
- o The noretrieve clause is extended to mark entire directories
- un-gettable.
- o The util/xferstats that comes with wu-ftpd 2.4 always produces a count
- of zero for "Systems Using Archives", because the array whose size is
- printed ("$systemfiles") never gets anything stored in it. Verified to
- exist in the current version.
- o The perl script xferstats incorrectly identifies internet addresses
- whose host name begins with "inf" or which are only 2 components wide
- (e.g., "bix.com") as unresolved. I could not verify the "inf" problem,
- but the 2 component problem has been verified to exist in the current
- version.
- o On the upload clause, 'no' should imply 'nodirs'. Good grief, how long
- has this bug been lurking about? [Ed: Since 2.1!]
- o The fixes for the CD ~ problem (ALTERNATE_CD option for beta 18) break
- a few things. Most notably, xferlog doesn't include the full name of
- the file and the upload command doesn't work properly. In addition, I
- believe noretrieve should be based on the real file system rather than
- the chroot'd environment. The man page says '/' means the name is an
- 'absolute path specification' which I take to mean from the real file
- system. Discovered during testing; I had the same problem with my CD ~
- fix in beta 17 so I was expecting this.
- o Makefile.lnx from BETA-18 links the daemon and support programs
- statically. The wisdom of this is debatable at best.
- o Makefile.lnx from BETA-18 presumes Bison is installed; it isn't always.
- o BETA-18 had the default to disable the ALTERNATE_CD fix for the CD ~
- problem. It should be enabled.
- o Merged 2.4.2-BETA-18 with 2.4.2-BETA-17-VR2. What a pain; next time I
- have to be up and ready with CVS!
- ###########################################################################
- Changes in 2.4.2-BETA-18: Released 6 July, 1998
- o Improve the build process for Solaris.
- o The response to the MKD command was not RFC 959 compliant. A number of
- responses given by wu-ftpd were not compliant with RFC 959. I have
- audited this in the software and corrected as many as I can find.
- o Make some changes to the installation process for Linux.
- o Fixed a case where a variable does not get properly defined if UPLOAD
- is not defined in config.h.
- o Added more information about the impact of the existance of the
- shutdown message file to the NOTES file.
- o The wrong error message would be returned when a write fails (during a
- PUT).
- o Add "exit(0);" to the end of the ftpshut.c file.
- o Permit the daemon to make use of the -A option to /bin/ls when on
- Solaris 2.
- o Log information when a transfer data connection comes from somewhere
- other than the address of the control connection.
- o Made it easier to compile on HP/UX.
- o Fixed an "off by one" problem in the "limit" stanza of the ftpaccess
- file when specific times are specified.
- o Linux releases other than RedHat 5.0 running kernels with versions
- greater than 2.0.31 would not compile properly.
- o Solaris 2.5.1 on sparc would not correctly determine if the snprintf
- family of library routines were to be linked from the C library or from
- the support library.
- o SITE CHMOD would not accept values greater than 777. Now, you can. Just
- define UNRESTRICTED_CHMOD in the root-level config.h file.
- o Port correction for HP/UX.
- o wu_logwtmp did not include the username when a logout record is
- written.
- o On SGI, initsetproctitle causes problems. I don't have an SGI to test
- the fix on, but I have attempted to address it in this release.
- o Fixed a problem with the STAT command when in Passive mode.
- o The home directory finding routing in glob.c would not return the right
- stuff when the "/./" convention is used for guest users.
- o Port correction for DEC UNIX.
- o Made it easier to compile of AIX 4.2.
- o _LARGE_FILES should not be defined for AIX 4.2 builds. I have changed
- the config.h file for aix to do this for AIX 4.2. I don't have AIX, so
- I don't know if this will work, but it's in there.
- o Changed the strategy for using bigcrypt() on C2 Security on Dec OSF/1.
- o NO_PRIVATE was not explicitly defined or undefined in config.h.
- o Fix a problem in the output of the ftpcount command.
- o Fix the "build" script to make it format the error message properly
- when multiple compile targets are provided.
- o Corrected a documentation error in describing the impact chroot has on
- hard links.
- o Address some misplaced or missing calls to alarm(0).
- o ftpcmd.y did not have NULL checking in certain places.
- o Port corrections for BSD/OS including support for BSD authentication.
- This should work on FreeBSD as well, but I have not altered the FreeBSD
- configuration to make use of this.
- o ftpcount did not always work correctly due to permissions problems on
- the login database file that ftpd maintains.
- o Fixed problems in the "limit" processing that were introduced in
- beta-16.
- o Fixed some problems with output formatting for ftpwho.
- o Added s/key support on NetBSD.
- o Addressed the issue concerning what "cd ~" should do. The alternate
- behavior can be obtained by defining ALTERNATE_CD in the root-level
- config.h file.
- o Fixed processing of the %U directive when the user is unknown.
- o RFC 931 calls would fail due to wu-ftpd failing to bind to the correct
- address on multi-homed hosts.
- o Fixed a problem where ftpd would exit with signal 11.
- o Fixed a problem with the handling of standard error messages from
- programs called during the file conversion process.
- ###########################################################################
- Changes in 2.4.2-BETA-17-VR2: Released 3 June, 1998
- o Left a debugging statement in for syslogmsg in VR1 patches.
- o The fix for CD ~ broke the upload and noretrieve access-control
- statements and changed what was written to xferlog and the syslog.
- Well, actually, it didn't break the noretrieve statement, but the man
- page says '/' means the name is an 'absolute path specification' and I
- take that to mean relative to the _real_ filesystem, not the chroot'd
- one. Discovered when set live on my main server; I really should'a
- tested with more than one guestgroup.
- ###########################################################################
- Changes in 2.4.2-BETA-17-VR1: Released 3 June, 1998
- o Shutdown warnings were not given to normal (non-anonymous) users on
- login.
- o Added 'hostname' configuration statement. Normally the server
- determines its host name from the system. This allows the admin to set
- the name on machines with several names (multihomed) where the default
- name is not the desired name. Manpage updated. The new ftpaccess
- clause is:
- hostname <some.host.name>
- o Move Linux to use POSIX regex included with the system instead of the
- routines included with wu-ftpd. This allows us to define path-filter
- statements which allow spaces in the pathnames. For example:
- path-filter anonymous /etc/pathmsg ^[-A-Za-z0-9_.[:space:]]*$ ^. ^-
- o Somewhere along the way the upload statement was broken. The fix adds
- a new parameter to upload so admins can determine the permissions for
- any new directories permitted. New features are documented in
- ftpaccess manpage.
- o Add -X command-line option and syslog option to log statement in
- ftpaccess. These options eliminate xferlog output and direct transfer
- logs to syslog instead. The new ftpaccess clause is:
- log syslog
- o Prevent NOOP resetting idle timer.
- o The CD command supports ~<username> but gives errors when just ~ is
- found. Note: there are still problems with other commands which may or
- may not accept tilde-user notation and may or may not understand a
- tilde by itself means the current user's home directory. This only
- effects chroot'd users.
- ###########################################################################
- Changes in 2.4.2-BETA-17: Released 10 May, 1998
- o Fix the hostacc.c introduced in beta-16. This fixes all the various
- alloc/free problems in the memory allocation and retains the dynamic
- feature introduced in beta-16.
- o Remove a declaration atol() in ftpcmd.y so that wu-ftpd will compile
- properly on systems that declare atol as a macro.
- o Move "initsetproctitle" from one location in the ftpd.c file to
- another. This should fix the problems many people report on some
- operating systems concerning the use of command line arguements.
- o Make a cosmetic fix to change what setproctitle() puts in the line
- returned when you do a ps from "sendmail:" to "ftpd:". This was a
- mistake I made when I integrated the new sendmail 8.8.7 proctitle stuff
- into beta-16.
- ###########################################################################
- Changes in 2.4.2-BETA-16: Released 21 December, 1997
- o The install shell script (when used on OpenServer 5) does not work
- correctly. Also, man pages can be installed and used with either nroff
- or groff is available. Groff can be obtained for OpenServer 5 from the
- sco web site. So, man pages will now be installed on SCO.
- o Fix some memory leaks.
- o off_t is a long long on AIX 4.2. I have attempted to compensate for
- this in ftpd.c, but I don't have an AIX system to test on, so it may
- not work. This affects places where wu-ftpd wants to print the size of
- files or the size of transfers.
- o There is a long standing problem in the code that does port checking.
- This bug makes it possible to exploit priviledged ports on the host
- system or the client system (but not other systems).
- o Fix a bug in the gzip2cmp utility.
- o Added a number of small fixes to make it easier to compile on AIX.
- o Prevent some systems from faulting when they encounter a null pointer
- in ftpcmd.y. Many systems already handle this, but some don't and this
- will insure that those are covered as well.
- o Correct for differences between SecureWare on Digital Unix 3.2 and
- Digital Unix 4.0.
- o A number of porting issues for SVR4-derived systems and Solaris 2.
- These are mainly centered around support for utmp/wtmp entries.
- o There were spaces where there should be tabs in the Makefiles for OSF.
- o Add -D_NO_PROTO to CFLAGS in the AIX Makefiles.
- o The man pages should be installed mode 644 (not 755).
- o Fix a number of errors in the implementation of the reply routines,
- especially when vprintf is not available.
- o Add a NOTE that the compiler which comes with HP/UX won't work.
- o HP/UX now builds with VIRTUAL as the default.
- o The man page for the daemon be installed as ftpd.1m instead of
- in.ftpd.1m for systems where section 1m is correct.
- o Reevaluate guestgroup after autogroup.
- o Dynamically allocate the ftphosts file in memory; removing the limit of
- 100 hosts.
- o wu-ftpd can hang in in "read" forever.
- o Fix conflicts between some subroutine names (getline and logwtmp) in
- wu-ftpd and functions in glibc2.
- o Fix a problem which can come up with strings which are not properly NUL
- terminated.
- o Add a comment in NOTES that for versions of Digital Unix without C2,
- you have to undef SECUREOSF in the config file for Digital Unix.
- o Porting correction for AIX; some minor code cleanups.
- o Correct building the support library under Solaris 2 to prevent ld
- from getting upset.
- o In ftpcount make sure the numbers listed are no lower than zero.
- o Correct S/KEY support for FreeBSD.
- ###########################################################################
- Changes in 2.4.2-BETA-15: Released 12 September, 1997
- o Correct a problem in the "NLST" command that could cause a system to
- eat up all memory and get sluggish. This could be seen as a Denial of
- Service attack. I have changed the software to detect this type of
- attack and not permit it.
- o The s/key challange in wu-ftpd did not conform to RFC 1760.
- o Porting corrections for FreeBSD.
- o Porting corrections for BSD/OS.
- o Fix a problem with the new, expired password support in beta-14.
- o Fix virutal hosting for AIX 4.1.x.
- o Fix some problems in S/KEY support. This is conditionalized since
- FreeBSD supports the old calling method.
- o Fixed a problem in ftpcmd.y concerning correctly recognizing the PASS
- command in a non-case sensitive manner.
- o Correct some configuration file problems when compiling for NetBSD.
- o Correct a typo in fnmatch.c. Also made changes to fnmatch.c to
- accomodate the lack of certain flag definitions on systems that claim
- to be POSIX compliant. These flags are not used by the current wu-ftpd
- server code.
- o Correct the description of the command line -o option in the ftpd man
- page.
- ###########################################################################
- Changes in 2.4.2-BETA-14: Released 14 August, 1997
- o When wu-ftpd is used on Unixware, readdir in glob.c would not work as
- expected since the version picked up during the link is the one from
- the ucb library, not the regular C library. Changed the UnixWare
- Makefile to link the regular C libarary before the ucb library.
- o Port for IRIX 6.3 corrected.
- o Port for Unixware 2.1 corrected.
- o getspnam on Unixware 2.1 is not NIS aware, so the password read from
- the password file should not be overwritten should the call fail.
- o Removed the dependency on libc in the makefile for Linux.
- o Port for AIX corrected.
- o NetBSD/sparc uses an int64_t for that stbuf.st_size. This means that
- %qu should be used for a sprintf selector instead of %lu.
- o Found a problem with Solari 2.5.1 libraries when used in chrooted mode
- along with a dynamically linked "ls". Sun has assigned a bugid for this
- problem. See the NOTES file for more on this.
- o Fixed another possible problem with ABOR verb processing with OOB data.
- o Using the /var/tmp directory for storing the pids is a bad idea. All
- configurations have been changed not to do this. This was really only
- an issue on System V systems and older BSD systems.
- o There is a problem attempting to compile beta-13 with the Bellcore skey
- library. That's because it doesn't compile with that version. The
- version needed is the one from the logdaemon suite by Wietse Venema. I
- am updating the documentation to make this clear.
- o It's easy for folks to get confused setting up the anonymous login and
- use the /./ suffix on the home directory like that used for guestgroup.
- When done, it will make other functions (like upload) in the ftpaccess
- fail to work. Processing of the two should be the same.
- o Made a change to how the upload directive is parsed so that "no dirs"
- does allow directories to be created and "no some-other-string" does
- not. Previously it didn't work this way.
- o A change made during the release of beta 12 changed how the upload
- option did filename matching to make it non-intuitive. This change has
- been reversed.
- o Made some fixes to some of the 5XX responses associated with failed
- logins comply with RFC 959
- o Correct some logic which would cause the server to send two responses
- to a client when passwd-check is used and the user failed to enter a
- "valid" password when logging in anonymously.
- o The "deny" keyword when followed with a domainname glob did not work.
- An IP address or address glob does work on SunOS 4.1.X machines. This
- turns out to be an issue only if you are not running yp or if yp is not
- able to access DNS. To address this, I have added -lresolv to the
- SunOS 4.1 makefile.
- o Remove HAVE_REGEX_H from the NeXTStep 3.X configuration.
- o Add a NOTE about a way to setup the "chroot" directory for wu-ftpd on
- IRIX.
- o Correct a benign syntax problem in access.c. This might cause some
- compilers to generate a warning.
- o A number of places in the software are attempting to print out off_t
- values using printf selectors that can't handle the size. Use casts to
- work arround the problem for now, but the mess should be revamped.
- o Port for AU/X corrected.
- o Fix some logic errors in processing the ABOR verb.
- o Plug some memory leaks in the glob code.
- o The argv array should be zeroed out before loading it. Also, ensure we
- don't spill off the end of the argv array when filling it.
- o Fixed a problem in realpath that is exposed when it is called with a
- rooted path. It could attempt to access an uninitialized location.
- o Corrected an error in the ftpaccess.5 man page concerning the
- path-filter example.
- o Made some cleanups in the ftpaccess file in the doc/examples directory.
- o Fixed a bug in some of the debugging code where syslog is called
- without a printf format string. This causes the daemon to crash on some
- operating environments.
- o Added a NOTE about the conflict between using Virtual FTP and
- TCPWrappers.
- o The passive subroutine might be vunerable to attack because a user
- could attempt to start a passive connection without doing a login
- first. This is now checked in the passive connection.
- o /usr/ucb/installbsd should be used for installation on OSF/1.
- o Port correction for C2 security with Digital Unix 4.X. These changes
- are made to the Digital Unix configuration. C2 is on by default.
- "./build dec" to get this.
- o Corrected problems when processing the %E macro. It becomes evident
- with the %E macro is used twice in an extended message. The entry
- information is not reset between calls. This can cause information to
- be printed twice.
- o FreeBSD support dirent.h and that sys/dir.h is being phased out. A
- change to the FreeBSD configuration header file has been made to use
- dirent.h in this release.
- o newvers.sh was made more POSIX compliant without affecting its
- operation on non-POSIX systems.
- o The arguments for select() under HPUX may not have the same types as
- those found on other systems.
- o Corrected a problem when %U is used in a banner prior to the user
- performing a login. Before beta 14, this could cause a segmentation
- violation. Now, it will cause %U to print "[unknown]" since login has
- not been done as yet.
- o Added a NOTE about Digital Unix and C2 security.
- o HAVE_STATVFS should be defined in the SGI IRIX configuration file.
- o Corrected a logic problem when the socket call fails when trying to
- open a data socket. The close() was being made anyway and this would
- generate a "bad file number" error since the socket never was opened.
- o SPT_TYPE should be SPT_NONE for SGI IRIX to insure that the time stamps
- on things didn't get set to GMT.
- o The default umask should be 022 instead of 002.
- o ftpconversions and ftpgroup parsing was in a sad state. Cleaned up.
- o Dealt with expired logins (when shadow passwords are used).
- o snprintf should be used now that there is good one for those systems
- that don't have it in the support library and for those that do have
- snprintf, it should be used where controlling the length of things is
- important. To that end a number of changes have been made in ftpd.c to
- use snprintf more widely.
- o On some versions of SunOS 4.X, the size_t typedef is not pulled in with
- the include directives that are there. I have modified snprintf.c to
- include <stdlib.h> when an ANSI C compilier is used and <sys/types.h>
- when one is not used. Hopefully, that will catch a size_t definition.
- If not, let me know, but do be sure to include what OS release and what
- compiler you are using. Additionally, I had left "const" definitions in
- places where non-ANSI C compilers would encounter them. I have removed
- those.
- o Port for SunOS 4.1.x corrected.
- o Fixed an error in the ftpaccess file handling for the tar and compress
- keywords. If any class was permitted to use them, then any class was.
- o Fixed some typos in the Makefiles: using .c where .o is correct.
- o rn is no longer passed to setproctitle since beta-13, so it does not
- need to attempt to strip.
- o ftpcmd.y has a one-off error in checking the length of a string.
- o Fixed popen.c to keep it from overflowing the argv buffer and from
- freeing space that was not allocated for that same argv buffer.
- o Fixed access.c and ftpcount.c to address a problem in a bug fix in
- beta-13 that kept access limits involving days other than Any from
- being enforced.
- o Fixed the xferstats script to allow it work when the log involves
- timestamps from two years.
- o Port for IRIX corrected.
- o RMD and DELE should both check permissions before attempting to do
- anything.
- o getdatasock should return the errno to the caller that caused the
- socket call to fail (as opposed to anything else that happens in that
- routine).
- o FreeBSD uses <sys/mount.h> for file system information used by the %F
- macro.
- o Add a define (HAVE_GETRLIMIT) to the config.hpx for HP-UX 10.10.
- o Port for Linux corrected.
- o Fixed a bug in the SITE CHMOD command that would cause the server to
- send two replies in some cases. This could confuse some FTP clients
- (and is a violation of protocol anyway). This should have been in
- beta-13, but I missed it somehow.
- o The dependencies on vers.c that are not uniform in all makefiles and
- can cause problems with certain versions of make. All makefiles for
- all operating systems supported in this distribution now have an
- explict dependency that should cause newvers.sh to be run if yacc was
- successful in building ftpcmd.c from ftpcmd.y. It will also properly
- stop attempting to compile anything (other than ckconfig) until this
- problem is fixed by the user. This can usually be done by being sure
- yacc is installed and in the user's PATH.
- o Fixed a Y2K compliance problem in ftpcmd.y where the year would always
- be printed as 19XX. wu-ftpd is as Y2K compliant as it can be with this
- fix.
- o I edited the INSTALL, README and NOTES documents in an attempt to make
- them clearer. I had a number of questions about "-a" and
- /etc/inetd.conf. People evidently don't read the README file very
- closely, so now I have put this information in more places than just
- the NOTES file. Hopefully that will stop most of these types of
- questions.
- ###########################################################################
- Changes in 2.4.2-BETA-13: Released 3 March, 1997
- o I noticed that setproctitle was not being called correctly in a couple
- of places in ftpd.c. There were not enough arguments.
- o Fixed some coding problems in access.c when determining host access
- information.
- o Added some bounds checking ftpd when building the directory command to
- send to the operating system. These changes may not be portable to all
- platforms, since they use snprintf, but we'll give it a try.
- o Port for SCO Openserver 5 corrected.
- o ftpcount.c does not include stdlib.h, which will cause malloc to
- allocate too little space to hold st_size on FreeBSD.
- o The failsafe number of fds in popen.c should be bigger than
- sizeof(long). I am setting it to 31. We'll see if that helps folks
- have fewer signal 10 or 11 errors that are unexplained.
- o FreeBSD already had the fnmatch function in its C library and didn't
- need the version in the support library.
- o Removed all references to LOG_TOOMANY, since it is no longer being
- actually implemented.
- o Enforce FreeBSD (when this software is built on FreeBSD) concerning the
- logging of numeric addresses when DNS name is larger than UT_HOSTSIZE
- field.
- o Removed rn from any string put in setproctitle.
- o Made some fixes to skey support.
- o Fixed some problems with the INSTALL file. There was a missing step and
- other problems.
- o sysconf be used to get the number of fds. This has been added to
- popen.c and a change has been made to config.hpx to use that. I have
- also tried to add this to other configurations that are documented (or
- are known) to support sysconf.
- o There was an extra %s in one of the reply strings. This is now fixed.
- o Corrected a problem in the code I put into popen.c to attempt to
- address an overflow problem. Too much late night coding for me:-).
- o Corrected an inconsistency in the forward definition of realpath when a
- STDC compiler is used.
- o Corrected a problem with compiling wu-ftpd on OSF. This is due to an
- failure in the software to include the correct include file.
- ###########################################################################
- Changes in 2.4.2-BETA-12: Released 19 January, 1997
- o The use of putchar in ftpd.c and ftpcmd.y might have side effects on
- argument lists when putchar is a macro. The use of putchar has been
- changed to putc in these files for this release.
- o Made some changes to ftpcount.c to make it return more useful
- information when used with Solaris2 and AIX.
- o Added a mechanism to permit AIX hosts to make effective use of the
- virtual host feature in wu-ftpd.
- o FreeBSD configuration should not install the sample configuration files
- over previously existing ones. This release does not install them at
- all.
- o Added additional protection for some operating system over the
- protection already provided.
- o Made a fix to the virtual host code that permits guest groups to
- continue to work.
- o Made a significant security fix without which regular and anonymous
- users could access files as the root user.
- o Made a fix to permit bad autogroup entries in the ftpaccess file to be
- ignored.
- o The readme directive should really only apply to regular files.
- o Corrected a number of problems with upload.
- o Corrected an inconsistency between the documentation and how the server
- logs information. The server has been fixed to document guest users in
- the xferlog with a "g" and real users with a "r".
- o Corrected an inconsistent use of #if verus #ifdef in authenticate.c.
- o Fixed some bugs in the build program.
- o ftpd.c should use getopt.
- o Fixed a bug in how ftpcount reports classes that can have an unlimited
- number of users.
- o All filename checking should be case sensitive.
- o Fixed a bug in how the shutdown feature works. The bug is that new
- connections may continue to be accepted after shutdown is in effect.
- o Fixed a bug in how the ftw.h file in the support directory gets
- included when it shouldn't be for Unixware 2.1.
- o Made changes to ftpcmd.y to ensure that free() is only called when the
- arguments are non-null.
- o Ported to AU/X 3.0
- o Fixed it so that "anonymous" and "ftp" are made to be the same as far
- as the server is concerned.
- o Corrected a mispelling in the NOTES file.
- o Corrected a bug introduced in the academ betas with the T_ASCII flag in
- ftpconversions. Its meaning had become reverse from what it used to be.
- o Fixed a problem in the old virtual code where an illegal strcpy was
- being done.
- o Fixed the basic problems introduced in beta-11 with the virtual host
- code. There have been no changes in how the configuration files are
- configured.
- o The ftpgroups and ftpconversions file checks in conversions.c and acl.c
- should be done using an fstat after an open succeeds.
- o There were places where files could or should be closed.
- o Corrected some macro inconsistencies in the manual pages.
- o Corrected some typos in the manual pages.
- o fnmatch.c did not have the right flags defined correctly.
- o Unixware 2.1 supports getrlimit. So, this is now added to config.uxw
- in the src/config directory.
- o stderr output from ftpd when being started by inetd were problematical.
- These error messages now go to syslog.
- o AUSCERT brought to my attention a need to check to be sure the 100
- element argv array in the popen subroutine is not overflowed. This is
- now done.
- o Subsequent files requests couldn't be aborted correctly.
- o Prevented a possible overflow problem when processing the SITE CHMOD
- and SITE UMASK commands. The server did not check for overflow
- conditions.
- o STAT was using a 211 response when a 213 is probably better.
- o RFC 1127's suggestions are not being followed by this server
- o Subsequent files upload requests couldn't be restarted correctly.
- o Having the debug mode log passwords is not good.
- o Corrected a typo on one of the URLs in the NOTES file.
- o When a null is sent to the server, it should ignore it but was treating
- it like EOF. Now it does ignore it.
- o Corrected errors in the ftpd.8 manual page.
- o Made some adjustments for making better use of available library
- routines in Unixware 2.1.
- o Solaris 2.X does support getrlimit. Changed config.sol to make use of
- it.
- o Ported to Digital Unix 3.2 with C2 Security.
- o There were some instances in ftpcmd.y where values could be NULL. This
- would cause segmentation violations on may flavors of Unix.
- o Fixed a bug in processing "SITE CHMOD 0". The command didn't work and
- the server didn't give a reply.
- o Linux 2.0 (actually libc 5.3.12) changed the way that directory
- manupulation was done. The problem was that glob.c would not compile
- on Linux 2.X systems. Ensured that Linux 1.X users would still be able
- to use this on their systems.
- ###########################################################################
- Changes in 2.4.2-BETA-11: Released 15 April, 1996
- o The manual pages for ftpaccess.5 and ftpd.8 have been modified. ftpd.8
- now documentes the previously undocumented "-u umask" option.
- ftpaccess.5 now clarifies the fact that the root-dir specified in the
- upload configuration line MUST match the home directory in the
- operation system password database.
- o Fixes for the optional shadow password file support for Linux.
- o The configuration file for Solaris specified the MAXHOSTNAMELEN before
- it was possible to check to see if was defined and this caused there to
- be spurious (and benign) error messages to be generated.
- o The file size in BSDI 1.1 is a long not a quad_t. This means that the
- conversion arguement should not be qd for sprintf's involving this
- variable.
- ###########################################################################
- Changes in 2.4.2-BETA-10: Released 15 March, 1996
- o Made some changes for AIX that I can't verify since I don't have AIX.
- o Added a number of small changes for FreeBSD.
- o Modified support for virtual domains. Modified the
- VIRTUAL.FTP.SUPPPORT support file and the man pages to reflect this
- change.
- o Added back an idle timeout routine that appears to compile cleanly on
- all the systems I test on.
- o Fixed some configuration problems for Linux.
- o Fixed the output of "site help" command to return the email address
- listed in the "email" entry from the ftpaccess file (if available).
- ###########################################################################
- Changes in 2.4.2-BETA-9: Released 23 January, 1996
- o Two changes to popen.c: In the child process, the port attached to the
- ftp protocol port is now closed before exec(); In the child process,
- the effective user and group ids are set as the real user and group ids
- prior to exec().
- o The "nodirs" option of the upload directive in an ftpaccess file is now
- fixed and actually works.
- o Added endgrent() to access.c, private.c and extensions.c to ensure the
- /etc/group or ~ftp/etc/group file is closed after it is used. Fix
- suggested by CERT.
- o Moved openlog() in ftpd.c up closer to the beginning of the program.
- Fix suggested by CERT.
- o Fixed all the support makefiles to build vsnprintf in the support
- library since most systems do not have it. I have left it out of
- systems that I know do have the real library routine (all BSD 4.4-Lite
- based OSes have this).
- ###########################################################################
- Changes in 2.4.2-BETA-8: Released 5 December, 1995
- o Overhauled reply, lreply and setproctitle to make appropriate use of
- varargs or stdargs as appropriate.
- o Added some FAQ references in the README file.
- o Added HAVE_GETRLIMIT and changes config files to support it where
- available in preference to HAVE_GETDTABLESIZE, which is now obsolete.
- o Added HAVE_SETPROCTITLE as a possible define to include the
- setproctitle() library routine from the system if it is available.
- o Added differentiator so that BSDI 1.X setproctitle() library routine is
- not used since it appears to be buggy.
- o Made a number of changes for BSD/OS.
- o Lowered optimization level from O3 to O2 for AIX.
- o Added some information in NOTES for adding shadow support under Linux.
- o Added some fixed for the use of sys_siglist. HAS_SIGLIST must be
- defined for this to be used.
- o Added some fixes for CPP processing problems with Digital Unix.
- ###########################################################################
- Changes in 2.4.2-BETA-7: Released 23 October, 1995
- o Support for Hitachi Unix variant added.
- o Changes in the configuration files for BSD/OS to accomodate a bug in
- the sprintf inheritied from BSD 4.4 Lite. (Effects FreeBSD, NetBSD and
- BSD/OS.)
- o Addition of a cookie '%u' to extensions.c which will show the RFC931
- remote username when available. I somehow like it to have the remote
- user see we take the 'all actions are logged' line seriously.
- o Support for SCO added.
- o Corrected the diagnostics from the randomsig subroutine.
- ###########################################################################
- Changes in 2.4.2-BETA-6: Released 15 October, 1995
- If you have an original copy of 2.4.2-BETA-6, the WU-FTPD Development
- Group would like a copy.
- o Added virtual ftp server support.
- o Added some AIX patches.
- o Added some notes concerning skey support in the NOTES file.
- o Config files for BSD 4.4-based OSes added.
- o Closing some file descriptors before exec in ftpd_popen (popen.c).
- o Missed changes to fnmatch in access.c.
- o Fixed ftpconversion problems when gzcating plain files.
- ###########################################################################
- Changes in 2.4.2-BETA-5: Released 11 July, 1995
- o Fixed ftpcmd.y parser for bug that has been present since the release
- of the NET-2 ftp daemon. Multiple 500 lines are not returned when
- certain bad commands are presented to the server.
- o Changed build to make the tar file create a directory that is the
- current release name and unpack into that newly created directory
- relative to the current directory.
- o Keep wu-ftpd from hanging when trying to use ident to identify someone.
- o More fixes to the config.hpx file for HP-UX.
- ###########################################################################
- Changes in 2.4.2-BETA-4: Released 29 June, 1995
- o Replaced a large part of the noretrieve subroutine in extensions.c.
- o Fixes for HPUX.
- o Fixed up the Makefiles for SunOS 4.1.X to make use of the dynamic load
- library correctly. This should probably be reworked to only use static
- linking, but that will be looked at another time.
- o Fixed some more bad NULL versus ' ' problems in ftpd.c and realpath.c
- in the src directory.
- ###########################################################################
- Changes in 2.4.2-BETA-3: Released 18 June, 1995
- If you have an original copy of 2.4.2-BETA-3, the WU-FTPD Development
- Group would like a copy.
- o Created the NOTES file and revised the README and INSTALL documents.
- o Fixed some minor source code cast that the SunPro C compiler was
- complaining about. Files affected (all in the src directory) are:
- ftpcmd.y, realpath.c, private.c, logwtmp.c, ftpd.c extensions.c
- o Revised the LINUX support to conform to LINUX 1.2.8 with gcc 2.6.3 from
- the slakware distribution.
- ###########################################################################
- Changes in 2.4.2-BETA-2: Released 18 June, 1995
- This version merged much of the functionality of 2.4-hobbit into Stan's
- baseline.
- If you have an original copy of 2.4.2-BETA-2, or 2.4-hobbit, the
- WU-FTPD Development Group would like a copy.
- o Removed the timeout patch from Dan Thorson that was in BETA-1. However,
- it will be back in a future beta.
- o Lifted from the Debian wu-ftpd-2.4-4 release with little or no change:
- doc/ftpaccess.5
- doc/ftpd.8
- config/config.lnx
- config/config.s41
- src/access.c
- src/acl.c
- src/ftpcount.c
- src/ftpshut.c
- src/hostacc.c
- src/logwtmp.c
- o build: added a kludge for enabling these changes, by spawning a shell.
- Added specific support for FreeBSD 2.0. Also, copy the Makefiles and
- config.h instead of hardlinking them, so that edits don't trash the
- original copies!
- o support/authuser.c: limit sscanf() of identd strings.
- o support/makefiles/*: minor changes to a couple of system-specific
- Makefiles.
- o extensions.c: [Debian -- "noretrieve" ACL keyword handler, NULL fixups]
- o extensions.c: Fix losing null dereference in Debian checknoretrieve().
- o extensions.c: #ifdef PARANOID -- disallow file deletion completely.
- o ftpcmd.y: [Debian -- "bison" patch for linux just moved some decls
- around]
- o ftpcmd.y: check PORT command against a bunch of things: being logged
- in, the client's source address, and the actual port number 1024 or
- greater.
- o ftpcmd.y: require login before various other things work: PASV, RNTO
- o ftpcmd.y: #ifdef PARANOID -- disable, trap, and log all SITE commands.
- Comments withheld about the lineage of whoever cooked up *that* gem.
- o ftpd.c: [Debian -- support "noretrieve" ACL keyword; misc NULL fixups]
- o ftpd.c: preload assorted variables with reasonable values. Globalize
- guestpw and authuser and update them so all routines can access them
- for correct logging.
- o ftpd.c: disallow "re-login".
- o ftpd.c: #ifdef ANON_ONLY -- only allow anonymous logins. Designed for
- the ftpd you hang out on your external machine.
- o ftpd.c: various places -- if told not to use the "ftpaccess" file,
- genuinely don't use routines that deal with it at all. [May save some
- of our butts when someone finds a bug in the extensions code!]
- o ftpd.c: #ifdef SKEY, added s/key functionality. The challenge emerges
- where the "Password required for username" response is normally sent.
- o ftpd.c: add endspent() to the shadow code, per Marek M.
- o ftpd.c: Flag attempts to exploit the trojanized 2.2c version.
- o ftpd.c: #ifdef STUPID_SPRINTF -- break up big "sprintf" for xferlog
- into two pieces. On some systems, sprintf is BROKEN. If you're using
- xferlog and your ftpd crashes right after a transfer, you probably need
- this.
- o ftpd.c: #ifdef PARANOID, disable file overwriting, with either "put" or
- "rename".
- o ftpd.c: Fix an ACL bug in renamefrom(). Doing two renames in a row
- would bypass the setting in the ACL file.
- o ftpd.c: call realpath() to get current wd.
- o ftpd.c: close data ports upon exiting, and close old PASV port if told
- to open a new one.
- o newvers.sh: include tiny little advertisement.
- o makefiles/Makefile.lnx: Mostly Debian; add -static, remove -DDEBUG, put
- in the "bison fix".
- o makefiles/Makefile.fbs: Add for FreeBSD 2.0; slight mod of "bsd".
- o config/config.fbs: config.h for Freebsd 2.0. Contains a hack to work
- around the fact that freebsd stdlib.h comes with a realpath() and the
- define in ftpd.c conflicts with it.
- o config/config.lnx: Debian version, with the same realpath() hack added.
- Linux has trouble with this too, but in unistd.h. Put "realpath" back
- into SRCS and OBJS definitions.
- o pathnames.linux: From Debian. Use this as a starting point for
- customizing pathnames.h on linux. A remaining deficiency is that NONE
- of the sources even *try* to reference the /usr/include/paths.h that
- many systems now have.
- o Version bumped to 2.4.2; no reason given but we can safely presume the
- reason was the confusion in version names in Stan's earlier releases.
- ###########################################################################
- Changes in 2.4.1-BETA-1: Released 13 May, 1995
- AKA 2.4.1-BETA
- AKA 2.4.2-BETA-1
- This version was announced and released as wu-ftpd-2.4.1-beta-1.tar, but
- other emails, and internal notes in later versions, refer to this version
- under all three names interchangably.
- If you have an original copy of 2.4.1-BETA-1, the WU-FTPD Development
- Group would like a copy.
- o Added changes for Solaris 2.4 compatibility. Changed the flag from
- SOLARIS21 to SOLARIS and made the changes generic for all releases of
- Solaris.
- o Added changes for UnixWare 4.2 compatibility. Added Makefiles and config.h
- header files.
- o Added ftruncate support routine for machines that don't have ftruncate, but
- do have chsize call.
- o Added a timeout patch created by Dan Thorson at Seagate to keep the server
- from creating a zombie process when a PASV client never actually connects.
- NOTE: This patch is commented out since I could not get it to work
- correctly and I hope someone will be able to fix this before we go to
- release. There was also another timeout patch that may be more suitable.
- Comments are welcome.
- o Added patches to hostacc.c to insure that memory dynamically allocated with
- malloc() is not free()d more than once. Patch from Jaakko Hyvatti.
- o Split the support/strcasestr.c into two files: strcaststr.c and strstr.c
- and altered the Makefiles to include the appropriate libraries in the
- support library.
- o Stan Barber took over stewardship of the daemon using 2.4-academ as the
- baseline for future development on 6 May, 1995. This ended a 13-month
- period where there was no maintainer at all!
- ###########################################################################
- Changes in 2.4-academ: Release date lost in the mists of time
- AKA 2.4.1-academ
- It is unknown whether Stan ever publicly released this version under
- either name. Emails, and internal notes in later versions, refer to
- this version under both names interchangably.
- If you have an original copy of 2.4-academ, or 2.4.1-academ, the WU-FTPD
- Development Group would like a copy.
- o Ported to BSDi.
- o Changed the fnmatch.c program in the support directory to return values
- that corresponded with the manual page. This was not necessary to
- support BSDi since it has its own fnmatch, but this make it possible
- for other platforms to make use of these changes transparently.
- o Changed the access.c program to do a case-insensitive search on the
- hostname without using fnmatch. This option is not supported by the
- bsdi or bsd-net2 fnmatch subroutine.
- o Changed all uses of fnmatch in the src directory to use the correct
- return values.
- o Added pathnames appropriate to bsdi to the pathnames.h file in the src
- directory. These are bracketed by appropriate #ifdef/#endif blocks.
- o Changed the root level makefile to copy files when installing them
- instead of moving them.
- o Created a set of root level makefiles for each supported platform. This
- will allow the ftpd to be installed exactly over the OS-based makefile
- if used generically.
- ###########################################################################
- Changes in 2.4: Rereleased on 6 January, 1997
- o Documentation update to point to the new address for the list server at
- Washington University at Saint Louis.
- o Corrected documentation error: this is version 2.4 not 2.2
- o Prevent reception of SIGURG from resulting in a resumption back to the
- main program loop.
- ###########################################################################
- Changes in 2.4: Rereleased on 13 November, 1995
- o Documentation update to point toward Stan Barber as the maintainer of
- WU-FTPD.
- ###########################################################################
- Changes in 2.4: Released on 13 April, 1994
- o This marks the end of Byran D O'Connor's tenure as prinicple developer.
- With his graduation, grants funding development were not renewed.
- o Removed some race conditions.
- o Fixed a spelling mistake.
- o Now uses sys/syslog.h on Ultrix systems.
- ###########################################################################
- Changes in 2.3: Released on 4 April, 1994
- o Bump the version number to avoid confusing with Trojan version.
- ###########################################################################
- Changes in 2.2: Released on 1 April, 1994
- o Fixed a bug in path processing of SITE EXEC commands.
- o Rewrote parts of private.c parsing routine, fixing problems with
- overloading the definition of gid_t.
- o Added support for class lists in separate file.
- o Changed a couple of occurrences of stat() to lstat() in delete() and
- renamefrom().
- o Changed #ifdef LOG_LOCAL7 to #ifdef FACILITY in ftpd.c
- ###########################################################################
- Changes in 2.1f: Released 25 March, 1994
- o Fixed NeXT config problem with NGROUPS_MAX.
- o Fixed multiple response bug with ftp|anonymous in /etc/ftpusers file.
- o Fixed BUS ERROR on upload on Sun 4.1.x systems.
- ###########################################################################
- Changes in 2.1e: Released 24 March, 1994
- o Fixed class determination code from failing after failed attempt.
- o Moved ACCESS DENIED syslog messages to LOG_NOTICE from LOG_INFO.
- o Fixed problems with NFS and server running as root.
- o Fixed problems with APPEND/OVERWRITE.
- o Patched SCO files to work with 3.2.4.
- o Fixed problems with uid/gid's.
- o Changed upload examples in ftpaccess.5 to be correct.
- o Allow for escaped #s in the ftpaccess file.
- o hostacc.c patches.
- o ftpshut.c: fixed file open problem when shutdown not defined.
- o Added acl_remove() to fix problems with dangling PIDs in PID files.
- o Fixed bug with real users > limit hanging clients.
- ###########################################################################
- Changes in 2.1d: Release date lost in the mists of time.
- If you have an original copy of 2.1d, the WU-FTPD Development Group
- would like a copy.
- o The changes for 2.1d were lost.
- ###########################################################################
- Changes in 2.1c: Released on 25 August, 1993
- o Fixed stupid bug with non-initialized pointers in *_check() functions.
- ###########################################################################
- Changes in 2.1b: Released on 16 July, 1993
- o Append now works again. A previous fix to solved files not getting
- truncated properly had broken it.
- o Double conversions were not working properly for some conversions.
- o Minor HP-UX portability problems corrected.
- o Minor Host Access case sensitivity bug fixed.
- o syslog after chroot fixed for SunOS by addition of TCP version of
- syslog functions. (It is syslog.c in the support directory.)
- o Data General support added.
- o ISC support added.
- o Added "rename <type> <yes|no>" option to prevent renaming files.
- o Fixed unsigned int comparisons to -1.
- o Added ckconfig program for checking proper locations of config files.
- o Changed syntax of "upload" command to include which ftp hierarchy it
- pertains.
- o Fixed some documentation errors.
- ###########################################################################
- Changes in 2.1a: Released on 27 May, 1993
- o Tabs were put back into the Makefiles for AIX.
- o acl_join() did not open the pid file is pidfd was invalid.
- o acl_join() did not unlock the pid file if user was already in there.
- ###########################################################################
- Changes in 2.1: Released on 12 May, 1993
- o Replaced xferstats.
- o Default was to not allow uploads ever. This is backwards, if no upload
- keywords are given, it should act like a normal server.
- o Double conversion stuff works now, but you know that already. Included
- is a gzip2comp (in util) for converting from gzip format to compress.
- o cwd_beenhere() now calls realpath(".", cwd) to figure out the path.
- This works for people in directories that are private. That is that
- some component of their path is not readable by them. (cwdir() fails
- in such a case.)
- o In an upload command, trying to set a file mode of 0000 would fail.
- This is now possible.
- o makedir() did not work properly for real users. This has also been
- fixed.
- o Fixed up support for NeXT and other systems. I cannot test these
- things, so there are bound to be problems.
- o In getgrent.c, removed the need for getgrent.c from the support
- library. This caused problems with systems running yellow pages (NIS).
- All gids in the private file are now parsed before the chroot(). This
- gives us one less open file descriptor.
- o For upload/truncate, STORE was not properly trunctating files when
- overwriting them.
- o Upload failing with directories in makedir/put commands: STORE and
- MAKEDIR were failing when giving full path names.
- o Multiple process ids were written into the pid-files when a failed
- login attempt was made. This caused problems with usage counts.
- o Added the %E magic cookie which gets replaced with the "email" string
- from the ftpaccess file.
- o For the %F magic cookie: added trivial support for Solaris 2.1 (at
- least). If you fix this for your system, send me a patch.
- o The %N magic cookie did not work after the chroot(). The pid file has
- to remain open for the duration of the server's life now in order for
- this to work.
- o In support/paths.h, removed the need for this file. It caused more
- problems than it was worth. The two #defines that were used were moved
- to src/pathnames.h
- o upload * no dirs: you can now specify a directory that does not allow
- uploads but does allow the creation of directories.
- o You can now get a listing of what aliases are available. At the ftp
- prompt type "quote site alias".
- o You can now specify a cdpath (like the csh variable).
- o You can specify an email address for the maintainer of the archive.
- This string will be used for the %E magic cookie.
- ###########################################################################
- Changes in 2.0: Rereleased on 12 April, 1993
- o Changed support/ftp.h to use the BSD copyright and remove the DEC
- copyright. DEC's version was just a copy of BSD's.
- ###########################################################################
- Changes in 2.0: Released on 8 April, 1993
- o guestgroup access no longer needs an entry in the secondary passwd file
- (~ftp/etc/passwd). The home directory is now specified as
- "root/./home" For example:
- ftptest:<encrypted>:100:200:Guest User:/var/ftp/./incoming:/etc/noshell
- When ftptest logs in, it will chroot to /var/ftp and then chdir to
- /incoming (which is actually /var/ftp/incoming before the chroot).
- Since the directory in /etc/passwd actually points to the guest's home
- directory, they can use .forward files, etc.
- o ftpshut program generates shutdown file for ftp server. Works
- similarly to shutdown(8). See ftpshut(8).
- o The conversion table has been moved to a separate file. The fields
- are:
- %s:%s:%s:%s:%s:%s:%s:%s
- Field Description
- 1 strip prefix
- 2 strip postfix
- 3 addon prefix
- 4 addon postfix
- 5 external command
- 6 types
- 7 options
- 8 description
- o Added following abilites configurable in the ftpaccess file. See
- ftpaccess(5).
- chmod <yes|no> <typelist>
- delete <yes|no> <typelist>
- overwrite <yes|no> <typelist>
- umask <yes|no> <typelist>
- upload <dir> <yes|no> <owner> <group> <mode>
- passwd_check <none|trivial|rfc822> {<warn|enforce>}
- alias <name> <dir>
- path_filter <typelist> <msg> <charset> {<disallowed> ...}
- o ftpcount no longer displays multiple listings for classes that have
- multiple "class ..." lines.
- o Bryan D O'Conner took over as the principal developer for Release 2.
- This ended a 19-month period where no updates were released. At this
- time the name was also shortened from wuarchive-ftpd to wu-ftpd.
- Bryan used BSD ftpd version 5.60 as his base, merging the changes from
- the earlier BSD ftpd Chris used. BSD ftpd version 5.60 was the version
- included in the "Final BSD Release". UUnet Technologies maintains a
- full copy of the final BSD release at ftp.uu.net.
- ###########################################################################
- Changes in 1.1: Released 23 September, 1991
- This was an interim release of wuarchive's modified FTP server. It is
- believed to be the first public release of the daemon.
- There are indications of attempts to track BSD versions, through BSD
- 6.14, but internal information in the releases lead me to believe these
- were local to the FTP site we found them at, and not official releases
- from Chris Myers.
- o The changes for 1.1 were lost. Most likely they were to merge the
- changes from the BSD version he first used (probably 5.59) and 5.60,
- or they were minor bug fixes which Chris felt no need to discuss since
- 1.0 had not been publicly released.
- ###########################################################################
- Changes in 1.0: Believed not to have been publicly released.
- This is believed to have not been publicly released, but was the
- original version used to implement wuarchive.wustl.edu; the success of
- this version appears to have prompted the public release of version
- 1.1 after some minor corrections.
- If you have an original copy of 1.0, the WU-FTPD Development Group
- would like a copy. Probable release dates are between 3 December,
- 1990, and 23 September, 1991.
- o Some older clients cannot handle multi-line replies. These can be
- disabled on a per-connection basis by using a dash (-) as the first
- character of the user's password.
- o Added ftpaccess control file. The following commands are available:
- limit <class> <n> <times> <message_file>
- class <class> <typelist> <addrglob>{ <addrglob>}{ <addrglob>}{ <addrglob>}
- deny <addrglob> <message_file>
- loginfails <number>
- log transfers <typelist> <directions>
- log commands <typelist>
- readme <path> {<when>}
- message <path> {<when>}
- banner <path>
- private <path>
- guestgroup <groupname> [<groupname> ...]
- autogroup <groupname> <class> [<class> ...]
- compress <yes|no> <classglob> [<classglob> ...]
- tar <yes|no> <classglob> [<classglob> ...]
- shutdown <path>
- Refer to the CHANGES file in the release for a full description of
- these new features.
- o Added the following command-line options:
- -a Enable use of ftpaccess file (access file MUST exist if used)
- -A Disable use of ftpaccess file
- -L Turn on command logging (See note. Overridden by ftpaccess, if used)
- -i Turn on file reception logging (overridden by ftpaccess, if used)
- -o Turn on file transmission logging (overridden by ftpaccess, if used)
- NOTE: If the -L flag is used, command logging will be on by default as
- soon as the ftp server is invoked. This will cause the server to log
- all USER commands, which if a user accidentally enters a password for
- that command instead of the username, will cause passwords to be logged
- via syslog.
- The -L flag is overridden by the ftpaccess file, if it is used --
- command logging options in the ftpaccess file take effect IMMEDIATELY
- upon entry of the USER command (before logging takes place).
- o There are some extensions to the FTP server such that if the user
- specifies a filename (when using a RETRIEVE command) such that:
- True Filename Specified Filename Action
- ------------------ -------------------- ---------------------------------------
- <filename>.Z <filename> Decompress file before transmitting
- <filename> <filename>.Z Compress <filename> before transmitting
- <filename> <filename>.tar Tar <filename> before transmitting
- <filename> <filename>.tar.Z Tar and compress <filename> before transmitting
- o The FTP server will attempt to check for valid e-mail addresses and
- chide the user if he doesn't pass the test. For users whose FTP client
- will hang on "long replies" (i.e. multiline responses), using a dash as
- the first character of the password will disable the server's lreply()
- function.
- o The FTP server can also log all file transmission and reception,
- keeping the following information for each file transmission that takes
- place.
- Mon Dec 3 18:52:41 1990 1 wuarchive.wustl.edu 568881 /files.lst.Z a _ o a chris@wugate.wustl.edu ftp 0 *
- %.24s %d %s %d %s %c %s %c %c %s %s %d %s
- 1 2 3 4 5 6 7 8 9 10 11 12 13
- 1 current time in the form DDD MMM dd hh:mm:ss YYYY
- 2 transfer time in seconds
- 3 remote host name
- 4 file size in bytes
- 5 name of file
- 6 transfer type (a>scii, b>inary)
- 7 special action flags (concatenated as needed):
- C file was compressed
- U file was uncompressed
- T file was tar'ed
- _ no action taken
- 8 file was sent to user (o>utgoing) or received from user (i>ncoming)
- 9 accessed anonymously (r>eal, a>nonymous) -- mostly for FTP
- 10 local username or, if guest, ID string given (anonymous FTP password)
- 11 service name ('ftp', other)
- 12 authentication method (bitmask)
- 0 none
- 1 RFC931 Authentication
- 13 authenticated user id (if available, '*' otherwise)
- o Chris Myers was the original author of wuarchive-ftpd. He based his
- work upon the University of California, Berkeley, (BSD) ftpd, most
- likely version 5.59.
- The WU-FTPD Development Group has BSD ftpd versions 5.51 and 5.60 (both
- found at the UUnet FTP site). An analysis of these versions shows
- Chris Myers used a version somewhere between them; most likely 5.59.
- If you have an original copy of BSD ftpd between these versions, dated
- between 8 May, 1989, and 12 April, 1991, we would like to examine a
- copy.
- ###########################################################################
- In the beginning there was the void.
- And BSD said ...