12f1fbc5a8da4e18a59084466a8ba1c7108efd23
[oftpd.git] / ChangeLog
1 2004-01-12  Werner Koch  <wk@gnupg.org>
2
3         * src/ftp_listener.c (connection_acceptor): Don't increase the
4         error counter for EMFILE conditions.
5
6 2003-08-13  Werner Koch  <wk@gnupg.org>
7
8         
9         * src/oftpd.c (reopen_syslog_hack): Removed.
10         (init_syslog_hack): Removed.  That was a whole stupid thing by me
11         as I didn'd realized that we are running chroot and so the
12         /dev/log socket could not be reopened by libc.
13         (main): Print a warning if there is no /dev directory below the
14         chroot.
15
16         * src/file_list.c (file_nlst,file_list): Don't list "/dev".
17         * src/ftp_session.c (change_dir, do_retr)
18         (do_size, do_mdtm): Likewise.
19
20 2003-08-12  Werner Koch  <wk@gnupg.org>
21
22         * src/oftpd.c (reopen_syslog_hack): Simply comparing the fd is not
23         enough due to race conditions.  So always check whether the syslog
24         fd is still bound to a unix domain socket.
25
26 2003-08-09  Werner Koch  <wk@gnupg.org>
27
28         * src/oftpd.c (main): Give LOG_FACILITY file scope.
29         (init_syslog_hack): New
30         (reopen_syslog_hack): New.
31         * src/ftp_session.c (set_pasv, open_connection): Insert
32         reopen_syslog_hack calls.
33         * src/ftp_listener.c (connection_acceptor, ftp_listener_init): Ditto.
34         * src/ftp_session.c (open_connection): Ditto.
35         
36         * src/file_list.c: As an extra safeguard check the provided
37         dir_len.
38         (file_nlst): Ditto.
39         (fdprintf): Extra paranoid safeguard for buggy vsnprintfs.
40
41 2003-05-22  Werner Koch  <wk@gnupg.org>
42
43         * src/ftp_command.c (parse_offset): Fixed offset checking.
44
45         * configure.in (AC_CHECK_SIZEOF): Add tests for off_t,
46         unsigned long and unsigned long long. 
47
48 2003-05-06  Werner Koch  <wk@gnupg.org>
49
50         * src/ftp_session.c (do_lprt): Do not set the port after emitting
51         an error.  Fixes an assertion failure in ip_equal.
52
53 2003-05-05  Werner Koch  <wk@gnupg.org>
54
55 - New option -r, --pasv-range to limit the range for passive ports to
56   specific firewall rules.
57
58 2001-05-28, Shane Kerr <shane@time-travellers.org>
59 - Version 0.3.6 released.
60 - Beat FreeBSD into submission.  Now compiles (and runs!) on FreeBSD
61   out of the box.
62
63 2001-05-11, Shane Kerr <shane@time-travellers.org>
64 - Changed REST to only work for IMAGE (i.e. binary) mode.
65 - Added the SIZE command.
66 - Added the MDTM (modification time) command.
67
68 2001-04-20, Shane Kerr <shane@time-travellers.org>
69 - Moved SIGPIPE ignore to run even in --nodetach mode.  Needed to avoid
70   unwanted signals on TCP disconnects.
71
72 2001-04-19, Shane Kerr <shane@time-travellers.org>
73 - Added more logging: all client messages are logged with address and
74   port, and all server responses are also logged.  This occurs at DEBUG
75   level, as it is probably not normally of interest.
76
77 2001-04-18, Shane Kerr <shane@time-travellers.org>
78 - Version 0.3.5 released.
79 - Changed resume code to reset offset to 0 after each file transfer.
80 - Set accept() socket to NONBLOCK to insure the listener doesn't get
81   stuck waiting for a connection.  This is documented in the NOTES
82   section for the accept() call in Linux.
83 - Added sendfile() support on Linux systems.
84
85 2001-04-14, Shane Kerr <shane@time-travellers.org>
86 - Fixed a bug caused by parsing EPRT commands.  The server doesn't
87   actually allow these commands, but it bravely attempts to parse them
88   anyway.  A special shout out to Anders Nordby for finding this.  The
89   error caused the server to terminate on an assert() fail, which is
90   good because no server corruption happened, but it's bad because the
91   server terminated without any indication.  Therefore....
92 - Changed most assert() calls to daemon_assert() calls.  These terminate
93   the application as before, but log to syslog and STDERR.
94 - Added ability to run as a non-daemon process.  This will allow the
95   server to be started from init, for instance.
96 - Added support for SIGTERM and SIGINT.  If one of these is received,
97   then the server closes the port 21 socket - meaning that it will
98   accept no further connections.  When all existing connections have
99   closed, then the server exits.  A new server may be started before
100   this occurs, to handle new connections.  This allows very short
101   downtimes:
102       # killall oftpd; sleep 1; /etc/init.d/oftpd start
103   This will result in a 1 second period of time where no new connections
104   are accepted, with no existing connections closed.  It's probably best
105   to wait for this second, to allow the signal time to arrive.  :)
106
107 2001-04-08, Shane Kerr <shane@time-travellers.org>
108 - Changed check for '/' in path - was improperly allowing escaped '/'
109   characters through the check!
110 - Set TCP_NODELAY flag on socket - much reduced latency on control
111   channel for high-speed connections.
112 - New and improved init script from Eric Jensen.
113
114 2001-04-07, Anders Nordby <anders@fix.no>
115 - FreeBSD port.
116
117 2001-04-03, Shane Kerr <shane@time-travellers.org>
118 - Version 0.3.4 released.
119 - Changed FTP listener code to attempt to continue processing when
120   formerly fatal errors occur.
121 - Added man page.
122 - Added Red Hat init script donated by Eric Jensen to release.
123
124 2001-03-28, Shane Kerr <shane@time-travellers.org>
125 - Version 0.3.3 released.
126 - Use IP address and port of the control connection port for default
127   Data Transfer Port, as defined by RFC 959.  Note that the default
128   server process DTP is never used in oftpd, but that's not a problem as
129   I read the RFC.
130 - Use config.h
131
132 2001-03-27, Matthew Danish <mdanish@andrew.cmu.edu>
133 - configure.in and af_portability.h fixes to allow compilation on
134   systems with both RFC 2553 and XNET formats
135
136 2001-03-27, Shane Kerr <shane@time-travellers.org>
137 - Fixed bug where wrong server address was used on initalization of
138   ftp_server class.  Passive probably didn't work in the 0.3.x series
139   for IPv4!
140
141 2001-03-26, Shane Kerr <shane@time-travellers.org>
142 - Version 0.3.2 released.
143 - Minor additions for better error reporting on error creating threads
144   in listener, as well as checking success on setgid() and setuid().  I
145   can't believe I wasn't!!!
146 - Set syslog() to use FTP_DAEMON
147
148 2001-03-23, Shane Kerr <shane@time-travellers.org>
149 - Fixed configure bug on Debian systems.  Special thanks to Matthew
150   Danish for helping me on this one.
151
152 2001-03-20, Matthew Danish <mdanish@andrew.cmu.edu>
153 - Clean up parsing of FTP address in ftp_listener.c
154 - Added options to specify interface and maximum number of client
155   connections at startup.
156 - Added --long-style command-line options.
157
158 2001-03-21, Shane Kerr <shane@time-travellers.org>
159 - The "Spring Fever" edition, version 0.3.1 released.
160
161   Added workaround for the evil glob() denial-of-service attack.  I
162   chose the simple method of preventing file listing with both path
163   separator and wildcards.  Either is okay, but not both.  I don't
164   expect this to cause problems with legitimate use, but I could be
165   wrong.  It was much simpler than my other thought.  :)
166
167   Changed code so that ECONNABORTED and ECONNRESET errors don't increase
168   the error count.  This is to prevent a malicious client from taking a
169   server down by sending a large number of connection requests that it
170   then aborts.
171
172   Integrated code from Matthew Danish <mdanish@andrew.cmu.edu> that
173   allows the user to specify the port to use from the command line.
174   Thanks!
175
176   Warnings from 0.3.0 still apply.  Use with caution.  Spring is in the
177   air, after all.
178
179 2001-03-20, Shane Kerr <shane@time-travellers.org>
180 - Version 0.3.0 released.  This is almost guaranteed not to work, as
181   I've not tested it with clients that support the new features.  But I
182   decided that after a year, I wasn't living up to the "release early,
183   release often" motto of open source.
184
185   In addition to working in the changes since the last release, I've
186   done:
187
188   o removed free list from ftp_listener; simple is better
189   o use a random port rather than incrememting sequence; useful for
190     preventing classes of data hijacking attacks
191
192   There is a potential DOS attack against all versions, see the BUGS
193   file.  This will be fixed ASAP (hopefully tomorrow).
194
195 2001-02-22, Matthew Danish <mdanish@andrew.cmu.edu>
196 - Fix for missing <sys/types.h> check in configure.in
197
198 2000-12-13, Mauro Tortonesi <mauro@ferrara.linux.it>
199 - Added IPv6 support (EPRT & EPSV - RFC2428)
200 - Added LPRT and LPSV support (RFC1639)
201
202 2000-08-25, Shane Kerr <shane@time-travellers.org>
203 - Fixed telnet module to properly handle telnet escape sequences (since
204   no clients actually use this, it wasn't really a problem)
205
206 2000-06-01, Shane Kerr <shane@time-travellers.org>
207 - Beau Kuiper, author of muddleftpd, sent me a fix for the Netscape
208   timing bug.  Thanks!!!
209
210 2000-04-03, Shane Kerr <shane@time-travellers.org>
211 - Version 0.2.0 released
212
213 2000-03-30, Shane Kerr <shane@time-travellers.org>
214 - Changed README send to only send on directory change if you actually
215   change to a different directory.  That is, "CWD ." does not send a
216   README file.  The reason for this is that many clients perform a 
217   "CWD /" as soon as it connects, which cause the README to be sent
218   twice - yuck!
219 - Added missing check for closed file descriptor in write_fully().
220 - Converted use of FILE pointers to file descriptors.  This wasn't done
221   in the most efficient possible method (i.e. with buffers), but it does
222   remove the maximum FILE limitation from the server.
223
224 2000-03-29, Shane Kerr <shane@time-travellers.org>
225 - Added -D_REENTRANT flag to compile options.
226 - Added an error data type to return details about errors that occur 
227   in module initialization.
228 - Changed telnet module to never drop characters on outbound, even if
229   we have a ton of DO and WILL commands from the other end.
230
231 2000-03-27, Shane Kerr <shane@time-travellers.org>
232 - Fixed bug in telnet code when sending "" string.
233 - Now sends README to client if file is in directory on connect
234   or directory change.
235 - Simplified watchdog a bit by adding pointer to watchdog in the
236   watched structure.
237 - Wrapped invariant() methods with #ifndef NDEBUG so they won't
238   get compiled in non-debug code (in case there's ever a 
239   non-debug version)
240
241 2000-03-22, Shane Kerr <shane@time-travellers.org>
242 - Changed NLST and LIST to silently drop a file specification that
243   starts with a '-'.  This will ignore attempts to pass an argument
244   to "ls" that some clients try - it probably won't do what they 
245   expect, but at least they'll get a list of files.
246
247 2000-03-19, Shane Kerr <shane@time-travellers.org>
248 - Set file descriptors 0, 1, and 2 to go to "/dev/null", so that
249   any error messages sent by, say, the kernel don't accidentally
250   go to a user.
251 - Changed watchdog to have a single thread to watch all connections, 
252   rather than a thread per connection.  This is considerably more
253   complex, but effectively doubles the number of connections that
254   can be supported (due to thread limits).
255
256 2000-03-16, Shane Kerr <shane@time-travellers.org>
257 - Added support for REST command.  (Note that this is *not* the REST
258   exactly as described by RFC.  The REST in the RFC only applies to
259   block or compressed mode transfer, which oftpd does not currently
260   support.  However, it appears that Unix systems interpret the 
261   parameter to the REST command as the offset into the file to resume
262   from.
263
264 2000-03-13, Shane Kerr <shane@time-travellers.org>
265 - Version 0.1.3 released
266
267 2000-03-12, Shane Kerr <shane@time-travellers.org>
268 - Fixed bug when connection limit reached
269 - Fixed bug when attempt to bind() an already bound port
270
271 2000-03-12, Shane Kerr <shane@time-travellers.org>
272 - Version 0.1.2 released
273
274 2000-03-11, Shane Kerr <shane@time-travellers.org>
275 - Move configuration values into oftpd.h
276 - Wrap source to 80 columns
277 - Fix pthread_create() error check (code had incorrectly used errno
278   rather than the return of pthread_create() to determine error)
279 - Fix threads to run in detached mode (when appropriate)
280 - Solaris port completed
281 - Support for STOR added (reply with 553 error)
282 - Added free list for per-thread information structures.
283