Bugtraq mailing list archives
Re: tcpd remarks warning
From: pmarc () cmg fcnbd com (Paul M. Cardon)
Date: Fri, 2 Apr 1999 16:04:26 -0600
"Stefano Torricella <thor () IRCITY ORG>" thus spake unto me:
: the bash or the bourne shell ignore \ on the comment line !
: Thinking that this is a general behavior for all the unix program i've
: contacted the author and manteiner of tcpd but for him this is correct.
: In all the case this may be dangerous so other sysadm may be interested on
: this behaviour
Here is the relevant portion of the hosts_access(5) man page for
tcp_wrappers version 7.6:
ACCESS CONTROL RULES
Each access control file consists of zero or more lines of
text. These lines are processed in order of appearance. The
search terminates when a match is found.
+ A newline character is ignored when it is preceded by a
backslash character. This permits you to break up long
lines so that they are easier to edit.
+ Blank lines or lines that begin with a `#' character
are ignored. This permits you to insert comments and
whitespace so that the tables are easier to read.
If you make the assumption that the rules are applied as listed in the man
page then the observed behavior of line continuation processing occuring
prior to comment stripping matches the documentation. However, it should be
stated explicitly in the documentation because of the potential unexpected
behavior noted by Stefano.
When config files are read, the function xgets() /* fgets() with
backslash-newline stripping */ in misc.c is called. The calling functions
_then_ check for comment lines and skip them (see hosts_access.c, inetcf.c,
and tcpdchk.c). It's easy enough to change this behavior in xgets by
replacing:
if (got >= 2 && ptr[got - 2] == '\\') {
with:
if (ptr[0] == '#') {
return (start);
} else if (got >= 2 && ptr[got - 2] == '\\') {
I see nothing wrong with a program parsing its own config files the way it
wants as long as the behavior is clearly documented. However, code in
inetcf.c parses inetd.conf with line continuation, something that inetd does
not do in any implementation I have seen. Fortunately, this does not affect
the functionality of tcpd itself since it doesn't use the code in inetcf.c.
While I believe it is unlikely that a backslash would be placed at the end of
a comment line in inetd.conf, tcpdmatch and tcpdcheck could miss problems in
inetd.conf that the user would expect to see reported. That's a bug.
-paul
Current thread:
- tcpd remarks warning Stefano Torricella (Apr 01)
- Re: tcpd remarks warning Greg A. Woods (Apr 02)
- Re: tcpd remarks warning John Line (Apr 02)
- Re: tcpd remarks warning Doug White (Apr 02)
- Re: tcpd remarks warning Paul M. Cardon (Apr 02)
- Re: tcpd remarks warning Wietse Venema (Apr 02)
- Re: tcpd remarks warning Wietse Venema (Apr 02)
- Re: tcpd remarks warning Greg A. Woods (Apr 02)
