--- tcpd.h.orig 2009-10-05 16:17:07.000000000 -0500 +++ tcpd.h 2020-08-07 03:49:33.000000000 -0500 @@ -4,6 +4,11 @@ * Author: Wietse Venema, Eindhoven University of Technology, The Netherlands. */ +/* Need FILE. */ +#include + +__BEGIN_DECLS + /* Structure to describe one communications endpoint. */ #define STRING_LENGTH 128 /* hosts, users, processes */ @@ -92,10 +97,10 @@ char pid[10]; /* access via eval_pid(request) */ struct host_info client[1]; /* client endpoint info */ struct host_info server[1]; /* server endpoint info */ - void (*sink) (); /* datagram sink function or 0 */ - void (*hostname) (); /* address to printable hostname */ - void (*hostaddr) (); /* address to printable address */ - void (*cleanup) (); /* cleanup function or 0 */ + void (*sink) (int); /* datagram sink function or 0 */ + void (*hostname) (struct host_info *); /* address to printable hostname */ + void (*hostaddr) (struct host_info *); /* address to printable address */ + void (*cleanup) (struct request_info *); /* cleanup function or 0 */ struct netconfig *config; /* netdir handle */ }; @@ -137,20 +142,23 @@ #define fromhost sock_host /* no TLI support needed */ #endif -extern int hosts_access(); /* access control */ -extern void shell_cmd(); /* execute shell command */ -extern char *percent_x(); /* do % expansion */ -extern void rfc931(); /* client name from RFC 931 daemon */ -extern void clean_exit(); /* clean up and exit */ -extern void refuse(); /* clean up and exit */ -extern char *xgets(); /* fgets() on steroids */ -extern char *split_at(); /* strchr() and split */ -extern unsigned long dot_quad_addr(); /* restricted inet_addr() */ -extern int numeric_addr(); /* IP4/IP6 inet_addr (restricted) */ -extern struct hostent *tcpd_gethostbyname(); +extern int hosts_access(struct request_info *request); /* access control */ +extern int hosts_ctl(char *daemon, char *name, char *addr, char *user); /* wrapper around request_init() */ +extern void shell_cmd(char *); /* execute shell command */ +extern char *percent_x(char *, int, char *, struct request_info *); + /* do % expansion */ +extern void rfc931(struct sockaddr_gen *, struct sockaddr_gen *, char *); + /* client name from RFC 931 daemon */ +extern void clean_exit(struct request_info *); /* clean up and exit */ +extern void refuse(struct request_info *); /* clean up and exit */ +extern char *xgets(char *, int, FILE *); /* fgets() on steroids */ +extern char *split_at(char *, int); /* strchr() and split */ +extern unsigned long dot_quad_addr(char *); /* restricted inet_addr() */ +extern int numeric_addr(char *str, union gen_addr *addr, int *af, int *len); /* IP4/IP6 inet_addr (restricted) */ +extern struct hostent *tcpd_gethostbyname(char *host, int af); /* IP4/IP6 gethostbyname */ #ifdef HAVE_IPV6 -extern char *skip_ipv6_addrs(); /* skip over colons in IPv6 addrs */ +extern char *skip_ipv6_addrs(char *str); /* skip over colons in IPv6 addrs */ #else #define skip_ipv6_addrs(x) x #endif @@ -196,20 +204,23 @@ * host_info structures serve as caches for the lookup results. */ -extern char *eval_user(); /* client user */ -extern char *eval_hostname(); /* printable hostname */ -extern char *eval_hostaddr(); /* printable host address */ -extern char *eval_hostinfo(); /* host name or address */ -extern char *eval_client(); /* whatever is available */ -extern char *eval_server(); /* whatever is available */ +extern char *eval_user(struct request_info *); /* client user */ +extern char *eval_hostname(struct host_info *); /* printable hostname */ +extern char *eval_hostaddr(struct host_info *); /* printable host address */ +extern char *eval_hostinfo(struct host_info *); /* host name or address */ +extern char *eval_client(struct request_info *);/* whatever is available */ +extern char *eval_server(struct request_info *);/* whatever is available */ #define eval_daemon(r) ((r)->daemon) /* daemon process name */ #define eval_pid(r) ((r)->pid) /* process id */ /* Socket-specific methods, including DNS hostname lookups. */ -extern void sock_host(); /* look up endpoint addresses */ -extern void sock_hostname(); /* translate address to hostname */ -extern void sock_hostaddr(); /* address to printable address */ +/* look up endpoint addresses */ +extern void sock_host(struct request_info *); +/* translate address to hostname */ +extern void sock_hostname(struct host_info *); +/* address to printable address */ +extern void sock_hostaddr(struct host_info *); #define sock_methods(r) \ { (r)->hostname = sock_hostname; (r)->hostaddr = sock_hostaddr; } @@ -257,7 +268,7 @@ * behavior. */ -extern void process_options(); /* execute options */ +extern void process_options(char *, struct request_info *);/* execute options */ extern int dry_run; /* verification flag */ /* Bug workarounds. */ @@ -296,3 +307,6 @@ #define strtok my_strtok extern char *my_strtok(); #endif + +__END_DECLS + --- scaffold.c.orig 2009-10-05 16:17:07.000000000 -0500 +++ scaffold.c 2020-08-07 03:47:57.000000000 -0500 @@ -179,10 +179,12 @@ /* ARGSUSED */ -void rfc931(request) -struct request_info *request; +void rfc931(rmt_sin, our_sin, dest) +struct sockaddr_gen *rmt_sin; +struct sockaddr_gen *our_sin; +char *dest; { - strcpy(request->user, unknown); + strcpy(dest, unknown); } /* check_path - examine accessibility */