Why did I get the message below in connection with my reply to Michael's
comment? My original message, as returned by the OpenPKG server, is
attached.

Dennis

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, December 03, 2003 11:13 AM
To: [EMAIL PROTECTED]
Subject: Message not recorded


Permission Denied
Ah! I got it now. My mistake was assuming that Matthias' changes had been
incorporated in the tcpwrappers I downloaded yesterday; but I now see that
it is older than Matthias' submission. So I'll add his changes. Thanks
Matthias!

Dennis

> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of Michael 
> Schloh v. Bennewitz via RT
> Sent: Wednesday, December 03, 2003 6:47 AM
> To: AdminCc of OpenPKG Ticket #299:
> Subject: [OpenPKG #299] Can't compile 
> tcpwrappers-7.6k-20031021.src.rpm on Solaris 9 [comment]
> 
> 
> Request 299 was acted upon.
> This is a comment. It is not sent to the Requestor(s). 
> ______________________________________________________________
> ___________
> 
>          URL: https://rt.openpkg.org/id/299
>       Ticket: [OpenPKG #299]
>      Subject: Can't compile tcpwrappers-7.6k-20031021.src.rpm 
> on Solaris 9
>   Requestors: [EMAIL PROTECTED]
>        Queue: openpkg
>        Owner: Nobody
>       Status: new
>  Transaction: Comentarios a�adidos por ms
>         Time: Mie. Dic. 03 12:47:12 2003 
> ______________________________________________________________
> ___________
> 
> More helpful code from Matthias KURZ follows, as found on
> 
>   http://www.mail-archive.com/openpkg-dev%40openpkg.org/msg11251.html
> 
> -- 
> Michael Schloh v. Bennewitz
> OpenPKG Developer
> [EMAIL PROTECTED]
> 
> 
> tcpwrappers
> -----------
> - changes to make it compile under Solaris
> - changes to let it run on machines that do not have IPv6 enabled
> 
> I did not know how to test the TLI part, because i have no 
> test case. The whole thing (with or without my patches) will 
> not run on Solaris versions before Solaris 8, i think.
> 
> Index: Makefile 
> ===================================================================
> RCS file: /cvs/opkg/vendor_stuff/tcpwrappers/Makefile,v
> retrieving revision 1.1.1.1
> diff -u -u -r1.1.1.1 Makefile
> --- Makefile    3 Jan 2003 18:52:40 -0000       1.1.1.1
> +++ Makefile    11 Nov 2003 00:18:26 -0000
> @@ -128,12 +128,12 @@
>  386bsd netbsd bsdos:
>         @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \
>         LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ= NETGROUP= TLI= \
> -       EXTRA_CFLAGS=VSYSLOG= all
> +       EXTRA_CFLAGS= VSYSLOG= all
>  
>  freebsd:
>         @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \
>         LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ= NETGROUP= TLI= \
> -       EXTRA_CFLAGS=VSYSLOG= all
> +       EXTRA_CFLAGS=-I. VSYSLOG= all
>  
>  linux:
>         @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) 
> STYLE=$(STYLE) \ @@ -183,11 +183,15 @@
>  
>  # SunOS 5.x is another SYSV4 variant.
>  sunos5:
> -       @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \
> -       LIBS="-lsocket -lnsl" RANLIB=echo ARFLAGS=rv VSYSLOG= \
> +       @case `uname -r` in \
> +            5.6) RTLIB="-lposix4";; \
> +              *) RTLIB="-lrt";; \
> +       esac; \
> +       make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \
> +       LIBS="-lsocket -lnsl $$RTLIB" RANLIB=echo ARFLAGS=rv 
> VSYSLOG= \
>         NETGROUP=-DNETGROUP AUX_OBJ=setenv.o TLI=-DTLI \
>         BUGS="$(BUGS)" all \
> -       EXTRA_CFLAGS=-DNEED_SETENV
> +       EXTRA_CFLAGS="-DNEED_SETENV -DNEED_GETOPT"
>  
>  # Generic SYSV40
>  esix sysv4:
> Index: fix_options.c 
> ===================================================================
> RCS file: /cvs/opkg/vendor_stuff/tcpwrappers/fix_options.c,v
> retrieving revision 1.1.1.1
> diff -u -u -r1.1.1.1 fix_options.c
> --- fix_options.c       5 Jan 2003 01:27:10 -0000       1.1.1.1
> +++ fix_options.c       11 Nov 2003 00:18:26 -0000
> @@ -47,7 +47,14 @@
>         clean_exit(request);
>      }
>      if (ADDR_FAM(&ss) == AF_INET) {
> +#if defined(__FreeBSD__) || defined(__sun__)
> +        unsigned char optbuf[BUFFER_SIZE / 3];
> +        int optlen;
> +        struct in_addr dummy;
> +        unsigned char *ucp;
> +#else
>          struct ip_opts optbuf;
> +#endif
>          char lbuf[BUFFER_SIZE], *lp, *cp;
>          struct   protoent *ip;
>          int optsize = sizeof(optbuf);
> @@ -65,9 +72,15 @@
>              * here was wrong.
>              */
>  
> +#if defined(__FreeBSD__) || defined(__sun__)
> +#define ADDR_LEN sizeof(dummy.s_addr)
> +            for (ucp = optbuf + ADDR_LEN; ucp < optbuf + 
> optsize; ucp += optlen) {
> +                u_char c = ucp[IPOPT_OPTVAL];
> +#else
>              for (i = 0; (void *)&optbuf.ip_opts[i] - (void 
> *)&optbuf <
>                  optsize; ) {
>                 u_char c = (u_char)optbuf.ip_opts[i];
> +#endif
>                 if (c == IPOPT_LSRR || c == IPOPT_SSRR) {
>                     syslog(LOG_WARNING,
>                       "refused connect from %s with IP source 
> routing options", @@ -77,7 +90,17 @@
>                 }
>                 if (c == IPOPT_EOL)
>                     break;
> +#if defined(__FreeBSD__) || defined(__sun__)
> +                if (c == IPOPT_NOP)
> +                    optlen = 1;
> +                else {
> +                    optlen = cp[IPOPT_OLEN];
> +                    if (optlen <= 0) /* Do not loop! */
> +                        break;
> +                }
> +#else
>                 i += (c == IPOPT_NOP) ? 1 : 
> (u_char)optbuf.ip_opts[i+1];
> +#endif
>              }
>         
>             lp = lbuf;
> Index: internal.h 
> ===================================================================
> RCS file: /cvs/opkg/vendor_stuff/tcpwrappers/internal.h,v
> retrieving revision 1.1.1.1
> diff -u -u -r1.1.1.1 internal.h
> --- internal.h  4 Jan 2003 23:37:53 -0000       1.1.1.1
> +++ internal.h  11 Nov 2003 00:18:26 -0000
> @@ -7,6 +7,7 @@
>  #ifndef IMPL_HEADER
>  #define IMPL_HEADER
>  
> +#include <sys/types.h>
>  #include <sys/socket.h>
>  #include <stdio.h>
>  #include <string.h>
> @@ -20,6 +21,12 @@
>  #define SAIN6( p )            ( (struct sockaddr_in6 *) (p) )
>  #define ADDR_FAM( p )         ( (p)->sa.sa_family )
>  
> +/* Convert IPv4 address that was mapped to an IPv6 address 
> back to IPv4 
> +*/ #ifndef IN6_V4MAPPED_TO_INADDR #define IN6_V4MAPPED_TO_INADDR(v6, 
> +v4) \
> +       memcpy(v4, ((char *)v6) + 12, sizeof(struct in_addr)); #endif
> +
>  /* Common string operations. Less clutter should be more readable. */
>  
>  #define STRN_CPY(d,s,l)        { strncpy((d),(s),(l)); 
> (d)[(l)-1] = 0; }
> Index: setenv.c 
> ===================================================================
> RCS file: /cvs/opkg/vendor_stuff/tcpwrappers/setenv.c,v
> retrieving revision 1.1.1.1
> diff -u -u -r1.1.1.1 setenv.c
> --- setenv.c    31 Aug 2002 16:40:34 -0000      1.1.1.1
> +++ setenv.c    11 Nov 2003 00:18:26 -0000
> @@ -20,7 +20,7 @@
>  
>  /* setenv - update or insert environment (name,value) pair */
>  
> -int my_setenv(const char *name, const char *value, int clobber)
> +int setenv(const char *name, const char *value, int clobber)
>  {
>      char   *cp;
>  
> Index: socket.c 
> ===================================================================
> RCS file: /cvs/opkg/vendor_stuff/tcpwrappers/socket.c,v
> retrieving revision 1.1.1.1
> diff -u -u -r1.1.1.1 socket.c
> --- socket.c    10 Mar 2003 16:05:21 -0000      1.1.1.1
> +++ socket.c    11 Nov 2003 00:18:26 -0000
> @@ -135,17 +135,31 @@
>                       sizeof(host->name), 0, 0, NI_NAMEREQD | 
> NI_NOFQDN) == 0)
>      {
>          struct addrinfo hints, *res, *ressave;
> +        struct in_addr v4addr;
>         int ret_val;
>  
>          memset(&hints, 0, sizeof(hints));
>          hints.ai_flags = AI_CANONNAME;
>          hints.ai_socktype = SOCK_STREAM;
> -        hints.ai_family = ADDR_FAM(tsa);
> +       if (ADDR_FAM(tsa) == AF_INET)
> +       {
> +            hints.ai_family = AF_INET;
> +           memcpy(&v4addr, &SAIN(tsa)->sin_addr, 
> sizeof(struct in_addr));
> +       }
> +       else /* only AF_INET6 left, currently */
> +       {  
> +           if (IN6_IS_ADDR_V4MAPPED(&tsa->sa_in6.sin6_addr)) {
> +               
> IN6_V4MAPPED_TO_INADDR(&tsa->sa_in6.sin6_addr, &v4addr);
> +               hints.ai_family = AF_INET;
> +           }
> +            else
> +               hints.ai_family = AF_INET6;
> +        }
>                 
>          /*
>          * And then a forward lookup on what was returned.
>          */
> -        if( (ret_val = getaddrinfo(host->name, NULL, &hints, 
> &res)) < 0 ) 
> +        if( (ret_val = getaddrinfo(host->name, NULL, &hints, 
> &res)) != 
> + 0 )
>         {
>             tcpd_warn("can't verify hostname: getaddrinfo(%s) 
> failed - %s",
>                       host->name, gai_strerror(ret_val));
> @@ -185,11 +199,14 @@
>              */
>             while (res)
>             {
> -               if (tsa->sa.sa_family != res->ai_family)
> -                       continue;
> +               if (res->ai_family != hints.ai_family) {
> +                   /* can this happen ??? */
> +                   res = res->ai_next;
> +                   continue;
> +               }
>                 if (res->ai_family == AF_INET)
>                 {
> -                   if (memcmp(&SAIN(tsa)->sin_addr, 
> +                   if (memcmp(&v4addr,
>                                &SAIN(res->ai_addr)->sin_addr,
>                                sizeof(struct in_addr)) == 0)
>                     {
> Index: tcpd.c 
> ===================================================================
> RCS file: /cvs/opkg/vendor_stuff/tcpwrappers/tcpd.c,v
> retrieving revision 1.1.1.1
> diff -u -u -r1.1.1.1 tcpd.c
> --- tcpd.c      5 Jan 2003 01:20:42 -0000       1.1.1.1
> +++ tcpd.c      11 Nov 2003 00:18:26 -0000
> @@ -44,11 +44,28 @@
>  int     allow_severity = SEVERITY;     /* run-time adjustable */
>  int     deny_severity = LOG_WARNING;   /* ditto */
>  
> +
> +int goon = 0;
> +
> +static
> +void wait_attach()
> +{
> +  while (goon == 0) sleep(1);
> +}
> +
> +
>  int main(int argc, char *argv[])
>  {
>      struct request_info request;
>      char    *path, path_buffer[MAXPATHNAMELEN];
>  
> +
> +    /*
> +     * debugging aid
> +    wait_attach();
> +    */
> +
> +
>      /* Attempt to prevent the creation of world-writable files. */
>  
>  #ifdef DAEMON_UMASK
> Index: tcpd.h 
> ===================================================================
> RCS file: /cvs/opkg/vendor_stuff/tcpwrappers/tcpd.h,v
> retrieving revision 1.1.1.1
> diff -u -u -r1.1.1.1 tcpd.h
> --- tcpd.h      5 Jan 2003 01:15:59 -0000       1.1.1.1
> +++ tcpd.h      11 Nov 2003 00:18:26 -0000
> @@ -7,6 +7,8 @@
>  #ifndef TCP_WRAPPERS_HEADER
>  #define TCP_WRAPPERS_HEADER
>  
> +#include <sys/types.h>
> +#include <sys/socket.h>
>  #include <netinet/in.h>
>  #include <netdb.h>
>  
> Index: tli.c 
> ===================================================================
> RCS file: /cvs/opkg/vendor_stuff/tcpwrappers/tli.c,v
> retrieving revision 1.1.1.1
> diff -u -u -r1.1.1.1 tli.c
> --- tli.c       2 Sep 2002 12:47:03 -0000       1.1.1.1
> +++ tli.c       11 Nov 2003 00:18:26 -0000
> @@ -77,13 +77,13 @@
>      tli_endpoints(request);
>      if ((request->config = tli_transport(request->fd)) != 0
>         && STR_EQ(request->config->nc_protofmly, "inet")) {
> -       if (request->client->unit != 0) {
> -           client = *(struct sockaddr_in *) 
> request->client->unit->addr.buf;
> -           request->client->sin = &client;
> +       if (request->client.unit != 0) {
> +           client = *(struct sockaddr_in *) 
> request->client.unit->addr.buf;
> +           request->client.au.sa_in = client;
>         }
> -       if (request->server->unit != 0) {
> -           server = *(struct sockaddr_in *) 
> request->server->unit->addr.buf;
> -           request->server->sin = &server;
> +       if (request->server.unit != 0) {
> +           server = *(struct sockaddr_in *) 
> request->server.unit->addr.buf;
> +           request->server.au.sa_in = server;
>         }
>         tli_cleanup(request);
>         sock_methods(request);
> @@ -100,10 +100,10 @@
>  {
>      if (request->config != 0)
>         freenetconfigent(request->config);
> -    if (request->client->unit != 0)
> -       t_free((char *) request->client->unit, T_UNITDATA);
> -    if (request->server->unit != 0)
> -       t_free((char *) request->server->unit, T_UNITDATA);
> +    if (request->client.unit != 0)
> +       t_free((char *) request->client.unit, T_UNITDATA);
> +    if (request->server.unit != 0)
> +       t_free((char *) request->server.unit, T_UNITDATA);
>  }
>  
>  /* tli_endpoints - determine TLI client and server endpoint 
> information */ @@ -140,7 +140,7 @@
>             return;
>         }
>      }
> -    request->client->unit = client;
> +    request->client.unit = client;
>  
>      /*
>       * Look up the server endpoint address. This can be used 
> for filtering on @@ -156,7 +156,7 @@
>         t_free((void *) server, T_UNITDATA);
>         return;
>      }
> -    request->server->unit = server;
> +    request->server.unit = server;
>  }
>  
>  /* tli_transport - find out TLI transport type */ 
> ______________________________________________________________________
> The OpenPKG Project                                    www.openpkg.org
> Developer Communication List                   [EMAIL PROTECTED]
> 

Reply via email to