summaryrefslogtreecommitdiff
path: root/usr.sbin/inetd
AgeCommit message (Collapse)Author
2022-08-10Remove RPC definechristos
2022-08-10PR/56963: Mark Davies: inetd not configured for rpcchristos
Move RPC includes to inetd.h
2022-08-10PR bin/56963 Mark Davies: inetd not configured for rpcdholland
Instead of using negative flags to turn on positive flags, set -DRPC in the makefile. Corrects a problem where the SunRPC code in parse.c was accidentally left disabled. This is a prime example of why we don't like negative flags...
2022-05-22fix various small typos, mainly in comments.andvar
2021-10-17To an alias address, or in a multihoming environment, the internal dgramryo
server may respond from a different address than the destination address sent by the client. To solve this problem, I introduce sendfromto() and recvfromto() so that the server can reply from the correct address, i.e., the destination address used in the request. This change also has the aspect of a reference implementation using the RECVDSTADDR and PKTINFO socket options.
2021-10-12inetd: remove trailing whitespace, add space after 'if' and 'for'rillig
No functional change.
2021-10-12inetd.8: remove trailing whitespacerillig
2021-10-12inetd.8: new sentence, new line; minor formatting issuesrillig
2021-10-12PR/56448: Solomon Ritzow: Various improvements.christos
Rate limiting code has been moved to ratelimit.c. I renamed clear_ip_list to rl_clear_ip_list and broke the code up into more functions. I have also made the per-IP rate limiting allocation more efficient. IP addresses are now stored in their network format instead of a string from getnameinfo (see inetd.h struct rl_ip_node). malloc calls use only the space needed by the structure by using offsetof on union members (I suppose this can be a bit dangerous if not done correctly...). Per-IP rate limiting still supports textual comparison using getnameinfo for address families other than AF_INET and AF_INET6, but I don't think there are any that are actually compatible or used by inetd (I haven't tested UNIX sockets with a remote bound to another file, but I did test using IPv6 with the textual format by commenting out the IPv6 specific code, and it works properly). Still potentially handy for the future. The IP node list (se_rl_ip_list) now uses the <sys/queue.h> SLIST macros instead of a custom list. I've broken rl_process up into helper functions for each type of rate limiting and created a separate function for address stringification, for use with printouts from the -d flag. I tried to reduce stack memory use by moving printing code involving string buffers into separate functions. I haven't tested rl_ipv6_eq on a 32-bit system. The code for the positional syntax has also been moved to parse.c. Function try_biltin has been added to remove parse.c:parse_server's dependency on the biltin structure definition. File inetd.h has been updated with the proper function prototypes, and the servtab structure has been update with the new IP node SLIST. I also moved things around a bit. The way we (a peer and myself) formatted inetd.h previously was somewhat confusing. Function and global variable prototypes are now organized by the source file they are defined in. I also added a -f flag that I saw in another problem report (https://gnats.netbsd.org/12823) that I thought could be useful. It runs inetd in the foreground but without debug printouts or SO_DEBUG. I'm not completely sure about the line "if (foreground) setsid()" that I changed from "if (debug) setsid()".
2021-09-03inetd: remove redundant tests before calling isspacerillig
2021-09-03inetd: remove redundant null check before freerillig
No functional change.
2021-09-03inetd: prepare for lint's strict bool moderillig
Lint's strict bool mode considers bool incompatible with the other scalar types. This makes the type of expressions more visible in the code. In particular, conditions of the form '!strcmp(...)' are no longer allowed, they have to be written as 'strcmp(...) == 0'. The operator '!' cannot be used with sep->se_wait since that has type pid_t, not bool. No change to the resulting binary.
2021-09-03inetd: normalize indentation and alignment in commentsrillig
2021-08-31inetd: fix Clang buildrillig
error: implicit conversion changes signedness: 'service_type' to 'int'
2021-08-31Use Dq.wiz
2021-08-30inetd: raise WARNS from 5 to 6rillig
The necessary fixes include: * explicit integer conversions, to get rid of mixed signedness * function prototypes for parameterless functions While here: * add space after comma * add space after 'if' * place the '{' of a function definition on a separate line * rename variables 'bits' and 'temp' to 'hi' and 'lo' * in parse_quote, prefer expressions over assignments * make hex_to_bits static No functional change.
2021-08-30inetd: remove trailing whitespacerillig
2021-08-30Wording and formatting improvements.wiz
New sentence, new line.
2021-08-30Fix reverted logic when parsing server program.mlelstv
Compare pointer with NULL not 0.
2021-08-30Summary: char is unsigned on arm, so use int when -1 indicates errortih
hex_to_bits() returns -1 on error, so declare it int, and do the same for the variables that hold intermediate values returned by it.
2021-08-29remove -m32 accidentally committedchristos
2021-08-29fix printf formats (intmax -> j)christos
2021-08-29Inetd enhancements by James Browning, Gabe Coffland, Alex Gavin, Solomon Ritzowchristos
Described in: https://www.mail-archive.com/tech-userlevel@netbsd.org/msg03114.html And developed in: https://github.com/ritzow/src/pull/1 From their notes: All new functionality should be explained by the updated manpage. The manpage has been refactored a bit: A new section "Directives" has been added and the information about default hostnames and IPsec directives has been moved there, and the new file include directive information is also there. getconfigent has the most major changes. A newline is no longer read immediately, but is called only by a "goto more" (inside an if(false) block). This allows multiple definitions or directives to exist on a single line for anything that doesn't terminate using a newline. This means a key-values service definition can be followed by another key-values service definition, a positional definition, or an ipsec, hostname, or .include directive on the same line. memset is no longer used explicitly to clear the servtab structure, a function init_servtab() is used instead, which uses a C struct initializer. The servtab se_group field is its own allocation now, and not just a pointer into the user:group string. Refactored some stuff out of getconfigent to separate functions for use by parse_v2.c. These functions in inetd.c are named with the form parse_*() parse_v2.c only has code for parsing a key-values service definition into a provided servtab. It should not have anything that affects global state other than line and line_number. Some function prototypes, structures, and #defines have been moved from inetd.c to inetd.h. The function config_root replaces config as the function called on a config file load/reload. The code removed from the end of config(void) is now called in config_root, so it is not run on each recursive config call. setconfig(void) was removed and its code added into config_root because that is the only place it is called, and redundant checks for non-null globals were removed because they are always freed by endconfig. The fseek code was also removed because the config files are always closed by endconfig. Rate limiting code was updated to add a per-service per-IP rate limiting form. Some of that code was refactored out of other places into functions with names in the form rl_*() We have not added any of the license or version information to the new files parse_v2.c, parse_v2.h, and inetd.h and we have not updated the license or version info for inetd.c. Security related: The behavior when reading invalid IPsec strings has changed. Inetd no longer exits, it quits reading the current config file instead. Could this impact program security? We have not checked for memory leaks. Solomon tried to use dmalloc without success. getconfigent seemed to have a memory leak at each "goto more". It seems like inetd has never free'd allocated strings when throwing away erroneous service definitions during parsing (i.e. when "goto more" is called when parsing fields). OpenBSD's version calls freeconfig on "goto more" (https://github.com/openbsd/src/blob/c5eae130d6c937080c3d30d124e8c8b86db7d625/usr.sbin/inetd/inetd.c#L1049) but NetBSD only calls it when service definitions are no longer needed. This has been fixed. freeconfig is called immediately before any "goto more". There shouldn't be any time when a servtab is in an invalid state where freeconfig would break.
2021-03-07Add blocklist support to libwrap which enables all programs using libwrapchristos
to block access from hosts we deny. (libwrap support from Greg A. Woods)
2019-12-27s/suport/support/msaitoh
2019-02-03- don't compare pointer with \0. in this case, *pointer is wanted,mrg
not \0 -> NULL, as we just tested pointer, and this is wanting to be the standard "is this string NULL or nul?" idiom.
2018-01-23ansify - drop the K&R style prototypes & implementations.sevan
2017-11-28Bump MAXARGV from 20 to 64 - with bozohttpd and all config on the commandmartin
line it is easy to hit the (silent) limit.
2017-10-17Don't setup SPs if no policy sepecifier is specifiedozaki-r
We expect that SPs are set up iff some policy sepecifier(s) are specified. Found on investigating an issue reported by Robert Swindells
2017-07-20Simplify.wiz
2017-07-19Rework previous (and the text it modified) for clarity.dholland
2017-07-16New sentence, new line.wiz
2017-07-16PR/52412: Edgar Pettijohn: Describe the service/port syntax.christos
2017-02-15Increase buffer size reported to strlcpy() to be one larger than theelric
length of the string we copy in so that there is space for the '\0'.
2014-04-05Use base 10 when logging the exit status or exit signal for sub-processes,khorben
instead of hexadecimal.
2012-12-13PR/47318: Henning Petersen: Replace (r)index with str(r)chr in inetd.cchristos
And while here strncpy with strlcpy
2012-01-04include <netipsec/ipsec.h> rather than <netinet6/ipsec.h> from userlanddrochner
where possible, for consistency and compatibility to FreeBSD (exception: KAME specific statistics gathering in netstat(1) and systat(1))
2011-08-31Use __deadjoerg
2011-04-25Use more markup.wiz
2010-12-15RLIMIT_NOFILE stabilized in NetBSD 17 years ago, so it's safe nowpooka
to remove the #ifdef's from around code which uses it.
2010-12-15Nuke conditionally compiled MULOG stuff. Itojun wanted to do itpooka
already 8 years ago when he fixed the compilation last time, and again it hasn't been buildable in years.
2010-03-25Avoid SIGSEGV in forked child process for (some?) instant-disconnect clients.dholland
2009-10-24Change manpage reference from talkd to ntalkd.reed
(Man link does exist, but no binary.)
2009-10-22Back out mDNS changes which were not discussed.tsarna
There is design work that needs to be done first.
2009-10-22Bump date for mDNS support.wiz
2009-10-22Add mDNS Service Directory support to inetd(8).jkunz
inetd(8) can now advertize services in the mDNS-SD. (Per service configuration option in inetd.conf(5).)
2009-07-14New sentence, new line; remove trailing whitespace.wiz
2009-07-14Fix typo; also do some minor wording adjustments nearby.dholland
2009-07-13Rename internal getline() function to get_line() so it doesroy
conflict with the soon to be added getline(3) libc function.
2009-05-23print the proper client address (ryo shimizu)christos