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