The chroot() is an implicit chdir("/"). Set the current directory to
"/" after session close. This helps to avoid references to mounted file
systems in dynamic media.
Script does what is expected and tries to do it as
smartly as possible.
+ remove occurrences of two blank comment lines
next to each other after Id string line removed.
+ remove entire comment blocks which only exited to
contain CVS Ids
+ If the processing left a blank line at the top of
a file, it was removed.
* ftpd/ftpd.c, httpd/asp.c, httpd/ejparse.c, httpd/emfdb.c,
httpd/misc.c, httpd/um.c, httpd/webs.c, httpd/websuemf.c,
libfs/src/dosfs/msdos_dir.c, libfs/src/dosfs/msdos_format.c,
libfs/src/dosfs/msdos_misc.c, libfs/src/nfsclient/src/nfs.c,
libmisc/capture/capture-cli.c, libmisc/monitor/mon-network.c,
libmisc/shell/hexdump-odsyntax.c, libmisc/shell/main_ifconfig.c,
libmisc/shell/shell.c, libmisc/shell/shell_makeargs.c,
libmisc/uuid/parse.c, libnetworking/libc/gethostbydns.c,
libnetworking/libc/gethostbyht.c, libnetworking/libc/gethostnamadr.c,
libnetworking/libc/getnetnamadr.c, libnetworking/libc/inet_addr.c,
libnetworking/libc/inet_network.c, libnetworking/libc/res_debug.c,
libnetworking/libc/res_init.c, libnetworking/libc/res_query.c,
libnetworking/rtems/rtems_mii_ioctl.c,
score/src/objectgetnameasstring.c: Readdress use of ctype methods per
recommendation from D.J. Delorie on the newlib mailing list. We
should pass an unsigned char into these methods.
* ftpd/ftpd.c, libcsupport/include/sys/ioccom.h,
libcsupport/src/ioctl.c, libnetworking/kern/uipc_mbuf.c,
libnetworking/libc/inet_addr.c, libnetworking/net/ethernet.h,
libnetworking/net/if.c, libnetworking/net/if_ethersubr.c,
libnetworking/net/if_ppp.c, libnetworking/net/if_pppvar.h,
libnetworking/net/if_var.h, libnetworking/net/ppp_tty.c,
libnetworking/netinet/in_cksum.c, libnetworking/nfs/bootp_subr.c,
libnetworking/rtems/rtems_bsdnet_internal.h,
libnetworking/sys/mbuf.h, pppd/md4.c, pppd/pppd.h: Remove warnings
due to improper use of int which shows up on 16 bit targets. Added
ioctl_command_t since IOCTL command argument does not reliably fit
into 16 bits.
* rtems_servers/ftp.d: Following changes:
- Hacks with current dir and root dir removed in favor of new libio
support for task-local current and root directories.
- Bug in `close_data_socket()' introduced by previous change fixed.
- `command_pasv()' changed to set timeout on socket we are listening
on and code fixed to don't close socket twice on error.
- `serr()' changed to clear `errno'.
- `data_socket()' changed to clear `errno' before `bind()'.
- `session()' changed to clear `errno' before processing session.
- `close_data_socket()' fixed to close both active and passive sockets
- Initialize info->data_socket to -1 in `daemon()'
- Initialize `fname' to empty string in `exec_command()'
* rtems_servers/ftpd.c, rtems_servers/ftpd.h: Major enhancements
as listed below:
- Timeouts on sockets implemented. 'idle' field added to
configuration. No timeout by default to keep backward compatibility.
Note: SITE IDLE command not implemented yet.
- Basic global access control implemented. 'access' field added to
configuration. No access limitations by default to keep backward
compatibility.
- Anchor data socket for active mode (using self IP and port 20.)
- Fixed default data port support (still not tested).
- Don't allow IP address different from originating host in
PORT command to improve security.
- Fixed bug in MDTM command.
- Check for correctness of parsing of argument in command_port().
- Fixed squeeze_path() to don't allow names like 'NAME/smth' where
'NAME' is not a directory.
- Command parsing a little bit improved: command names are now
converted to upper-case to be more compatible with RFC (command
names are not case-sensitive.)
- Reformat comments so that they have RTEMS look-and-feel.
- Fixed DELE, SITE CHMOD, RMD, MKD broken by previous changes
- True ASCII mode implemented (doesn't work for hooks and /dev/null)
- Passive mode implemented, PASV command added.
- Default port for data connection could be used (untested, can't find
ftp client that doesn't send PORT command)
- SYST reply changed to UNIX, as former RTEMS isn't registered name.
- Reply codes reviewed and fixed.
* rtems_servers/ftpd.c, rtems_servers/ftpd.h: Major enhancements
as listed below:
- use pool of pre-created threads to handle sessions instead of
creating/deleting threads on the fly
- LIST output is now similar to what "/bin/ls -al" would output,
thus FTP clients such Netscape are happy with it.
- LIST NAME now works (both for files and directories)
- added support for NLST, CDUP, and MDTM FTP commands to make
more FTP clients happy
- keep track of CWD for every session separately
- ability to specify root directory name for FTPD in configuration
table. FTPD will then create illusion for FTP clients that this
is actually root directory.
- ignore options sent in commands, thus LIST -al FILE works and
doesn't try to list "-al" directory.
- buffers are allocated on stack instead of heap where possible to
eliminate malloc/free calls (avoid possible heap fragmentation
troubles).
- drop using of task notepad to pass parameters - use function
arguments instead
- use snprintf() instead of sprintf() as the latter is unsafe
- use of PF_INET in socket() instead of AF_INET
Here are ftp clients I've tried new FTPD with (all of them
running on Debian GNU/Linux 2.2):
Lftp 2.1.10
NcFTP 2.4.3
Netscape 4.75
ftp
mc 4.5.49