Author: dim
Date: Mon Jan  9 20:13:50 2017
New Revision: 311813
URL: https://svnweb.freebsd.org/changeset/base/311813

Log:
  MFC r311459:
  
  Put proper prototypes in tcpd.h
  
  Clang 4.0.0 complains about tcpd.h's not-really-prototypes, e.g.:
  
      /usr/include/tcpd.h:75:24: error: this function declaration is not a 
prototype [-Werror,-Wstrict-prototypes]
      extern int hosts_access();              /* access control */
                             ^
  
  To fix this, turn these declarations into real prototypes.  While here,
  garbage collect the incompatible rfc931() function from scaffold.c, as
  it is never used.
  
  Reviewed by:  emaste
  Differential Revision:        https://reviews.freebsd.org/D9052
  
  MFC r311461:
  
  Also remove unnecessary extern keywords from tcpd.h.
  
  Noticed by:   kib
  
  MFC r311556:
  
  After r311459, some ports can break, because a few of the newly added
  prototypes in <tcpd.h> use FILE.  Pull in a minimal forward declaration
  of FILE from <stdio.h> to minimize impact.  Sorry for the breakage.
  
  Reported by:  Shawn Webb <shawn.w...@hardenedbsd.org>

Modified:
  stable/11/contrib/tcp_wrappers/scaffold.c
  stable/11/contrib/tcp_wrappers/tcpd.h
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/contrib/tcp_wrappers/scaffold.c
==============================================================================
--- stable/11/contrib/tcp_wrappers/scaffold.c   Mon Jan  9 19:42:22 2017        
(r311812)
+++ stable/11/contrib/tcp_wrappers/scaffold.c   Mon Jan  9 20:13:50 2017        
(r311813)
@@ -235,16 +235,6 @@ struct request_info *request;
     exit(0);
 }
 
-/* dummy function  to intercept the real rfc931() */
-
-/* ARGSUSED */
-
-void    rfc931(request)
-struct request_info *request;
-{
-    strcpy(request->user, unknown);
-}
-
 /* check_path - examine accessibility */
 
 int     check_path(path, st)

Modified: stable/11/contrib/tcp_wrappers/tcpd.h
==============================================================================
--- stable/11/contrib/tcp_wrappers/tcpd.h       Mon Jan  9 19:42:22 2017        
(r311812)
+++ stable/11/contrib/tcp_wrappers/tcpd.h       Mon Jan  9 20:13:50 2017        
(r311813)
@@ -6,6 +6,17 @@
   * $FreeBSD$
   */
 
+#ifdef INET6
+#define        TCPD_SOCKADDR struct sockaddr
+#else
+#define        TCPD_SOCKADDR struct sockaddr_in
+#endif
+
+#ifndef _STDFILE_DECLARED
+#define _STDFILE_DECLARED
+typedef struct __sFILE FILE;
+#endif
+
 /* Structure to describe one communications endpoint. */
 
 #define        STRING_LENGTH   128             /* hosts, users, processes */
@@ -13,11 +24,7 @@
 struct host_info {
     char    name[STRING_LENGTH];       /* access via eval_hostname(host) */
     char    addr[STRING_LENGTH];       /* access via eval_hostaddr(host) */
-#ifdef INET6
-    struct sockaddr *sin;              /* socket address or 0 */
-#else
-    struct sockaddr_in *sin;           /* socket address or 0 */
-#endif
+    TCPD_SOCKADDR *sin;                        /* socket address or 0 */
     struct t_unitdata *unit;           /* TLI transport address or 0 */
     struct request_info *request;      /* for shared information */
 };
@@ -67,21 +74,22 @@ extern char paranoid[];
 /* Global functions. */
 
 #if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
-extern void fromhost();                        /* get/validate client host 
info */
+void fromhost(struct request_info *);  /* get/validate client host info */
 #else
 #define        fromhost sock_host              /* no TLI support needed */
 #endif
 
-extern int hosts_access();             /* access control */
-extern int hosts_ctl();                        /* wrapper around 
request_init() */
-extern void shell_cmd();               /* execute shell command */
-extern char *percent_x();              /* do %<char> 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() */
+int hosts_access(struct request_info *);                       /* access 
control */
+int hosts_ctl(char *, char *, char *, char *);                 /* wrapper 
around request_init() */
+void shell_cmd(char *);                                                /* 
execute shell command */
+char *percent_x(char *, int, char *, struct request_info *);   /* do %<char> 
expansion */
+void rfc931(TCPD_SOCKADDR *, TCPD_SOCKADDR *, char *);         /* client name 
from RFC 931 daemon */
+void clean_exit(struct request_info *);                                /* 
clean up and exit */
+void refuse(struct request_info *);                            /* clean up and 
exit */
+char *xgets(char *, int, FILE *);                              /* fgets() on 
steroids */
+
+char *split_at(char *, int);                                   /* strchr() and 
split */
+unsigned long dot_quad_addr(char *);                           /* restricted 
inet_addr() */
 
 /* Global variables. */
 
@@ -98,13 +106,8 @@ extern int resident;                        /* > 0 if 
residen
   * attributes. Each attribute has its own key.
   */
 
-#ifdef __STDC__
-extern struct request_info *request_init(struct request_info *,...);
-extern struct request_info *request_set(struct request_info *,...);
-#else
-extern struct request_info *request_init();    /* initialize request */
-extern struct request_info *request_set();     /* update request structure */
-#endif
+struct request_info *request_init(struct request_info *,...);  /* initialize 
request */
+struct request_info *request_set(struct request_info *,...);   /* update 
request structure */
 
 #define        RQ_FILE         1               /* file descriptor */
 #define        RQ_DAEMON       2               /* server process (argv[0]) */
@@ -124,27 +127,27 @@ extern struct request_info *request_set(
   * 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 */
+char *eval_user(struct request_info *);                /* client user */
+char *eval_hostname(struct host_info *);       /* printable hostname */
+char *eval_hostaddr(struct host_info *);       /* printable host address */
+char *eval_hostinfo(struct host_info *);       /* host name or address */
+char *eval_client(struct request_info *);      /* whatever is available */
+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 */
+void sock_host(struct request_info *);         /* look up endpoint addresses */
+void sock_hostname(struct host_info *);                /* translate address to 
hostname */
+void sock_hostaddr(struct host_info *);                /* address to printable 
address */
 #define        sock_methods(r) \
        { (r)->hostname = sock_hostname; (r)->hostaddr = sock_hostaddr; }
 
 /* The System V Transport-Level Interface (TLI) interface. */
 
 #if defined(TLI) || defined(PTX) || defined(TLI_SEQUENT)
-extern void tli_host();                        /* look up endpoint addresses 
etc. */
+void tli_host(struct request_info *);          /* look up endpoint addresses 
etc. */
 #endif
 
  /*
@@ -153,13 +156,8 @@ extern void tli_host();                    /* look up end
   * everyone would have to include <setjmp.h>.
   */
 
-#ifdef __STDC__
-extern void tcpd_warn(char *, ...);    /* report problem and proceed */
-extern void tcpd_jump(char *, ...);    /* report problem and jump */
-#else
-extern void tcpd_warn();
-extern void tcpd_jump();
-#endif
+void tcpd_warn(char *, ...);           /* report problem and proceed */
+void tcpd_jump(char *, ...);           /* report problem and jump */
 
 struct tcpd_context {
     char   *file;                      /* current file */
@@ -185,42 +183,42 @@ extern struct tcpd_context tcpd_context;
   * behavior.
   */
 
-extern void process_options();         /* execute options */
-extern int dry_run;                    /* verification flag */
+void process_options(char *, struct request_info *);   /* execute options */
+extern int dry_run;                                    /* verification flag */
 
 /* Bug workarounds. */
 
 #ifdef INET_ADDR_BUG                   /* inet_addr() returns struct */
 #define        inet_addr fix_inet_addr
-extern long fix_inet_addr();
+long fix_inet_addr(char *);
 #endif
 
 #ifdef BROKEN_FGETS                    /* partial reads from sockets */
 #define        fgets fix_fgets
-extern char *fix_fgets();
+char *fix_fgets(char *, int, FILE *);
 #endif
 
 #ifdef RECVFROM_BUG                    /* no address family info */
 #define        recvfrom fix_recvfrom
-extern int fix_recvfrom();
+int fix_recvfrom(int, char *, int, int, struct sockaddr *, int *);
 #endif
 
 #ifdef GETPEERNAME_BUG                 /* claims success with UDP */
 #define        getpeername fix_getpeername
-extern int fix_getpeername();
+int fix_getpeername(int, struct sockaddr *, int *);
 #endif
 
 #ifdef SOLARIS_24_GETHOSTBYNAME_BUG    /* lists addresses as aliases */
 #define        gethostbyname fix_gethostbyname
-extern struct hostent *fix_gethostbyname();
+struct hostent *fix_gethostbyname(char *);
 #endif
 
 #ifdef USE_STRSEP                      /* libc calls strtok() */
 #define        strtok  fix_strtok
-extern char *fix_strtok();
+char *fix_strtok(char *, char *);
 #endif
 
 #ifdef LIBC_CALLS_STRTOK               /* libc calls strtok() */
 #define        strtok  my_strtok
-extern char *my_strtok();
+char *my_strtok(char *, char *);
 #endif
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to