BASS diffs

From: Chris Cappuccio (chrisat_private)
Date: Wed Aug 18 1999 - 10:45:14 PDT

  • Next message: £À·çÔ¿ͣ: "Re: Symmetric Multiprocessing (SMP) Vulnerbility in BSDi 4.0.1"

    I made some diffs to get BASS to compile on OpenBSD and Solaris as well
    as Linux..They are very minimal...
    
    diff -uN bass-1.0.7/BASS.c bass/BASS.c
    --- bass-1.0.7/BASS.c	Sun Aug  8 12:43:51 1999
    +++ bass/BASS.c	Mon Aug 16 15:15:13 1999
    @@ -24,6 +24,7 @@
     #include <errno.h>
     #include <signal.h>
     #include <sys/param.h>
    +#include <sys/termios.h>
    
     #include "list.h"
     #include "readconf.h"
    @@ -487,11 +488,11 @@
           log("%s - [%s] OUT OF MEMORY?!?!?!.",
     	  cgi_hooks[i].cgi_alias, host);
           break;
    -    case EBADRQC	:
    +    case EINVAL:
           log("%s - [%s] cgi not installed.",
     	  cgi_hooks[i].cgi_alias, host);
           break;
    -    case -1	:
    +    case -1:
           log("%s - [%s] unknown cgi failure.",
     	  cgi_hooks[i].cgi_alias, host);
           break;
    @@ -526,12 +527,12 @@
     	  scan_hooks[i].scan_alias, host);
           break;
    
    -    case EBADRQC      :
    +    case EINVAL      :
           log("%s - [%s] Host denied Iquery request",
     	  scan_hooks[i].scan_alias, host);
           break;
    
    -    case EPROTO	    :
    +    case ENOPROTOOPT	    :
           log("%s - [%s] server type mismatch",
     	  scan_hooks[i].scan_alias, host);
           break;
    diff -uN bass-1.0.7/Makefile bass/Makefile
    --- bass-1.0.7/Makefile	Sun Aug  8 12:43:51 1999
    +++ bass/Makefile	Mon Aug 16 15:29:06 1999
    @@ -14,14 +14,15 @@
     BASS_DEFS = -DBASS_DEFAULT_DISTDIR=\"$(BASS_DISTDIR)\"
    
     # On Solaris you'll need to add *at least* these linker flags:
    -# -lnsl -lsocket -lresolv -lrpc (is that how the rpc library is called?)
    +# -lnsl -lsocket -lresolv
     #
     # On Irix you'll need to... Hmmm...
     #
     # Forget it! I'm not going to fight Unix. Here's a nickel kid, go buy yourself
     # a Linux distribution.
    
    -BASS_LIBS =
    +BASS_LIBS=
    +#BASS_LIBS =-lnsl -lsocket -lresolv
     BASS_INCLUDES =
    
     BASS_OBJS = BASS.o job.o log.o list.o xmalloc.o network.o icmp.o \
    @@ -29,12 +30,12 @@
     	cgi.o uname.o \
     	bind.o imapd.o qpopper.o innd.o wingate.o \
     	nfsmount_xdr.o rpc.o \
    -	$(BASS_LIBS)
    +#	strsep.o
    
     all: BASS	
    
     BASS: $(BASS_OBJS)
    -	$(CC) -o BASS $(BASS_OBJS)
    +	$(CC) -o BASS $(BASS_OBJS) $(BASS_LIBS)
    
     $(LIBPCLOAK_OBJ):
     	cd $(LIBPCLOAK_DIR); $(MAKE) $(LIBPCLOAK).a
    diff -uN bass-1.0.7/README.SOLARIS bass/README.SOLARIS
    --- bass-1.0.7/README.SOLARIS	Wed Dec 31 16:00:00 1969
    +++ bass/README.SOLARIS	Mon Aug 16 15:28:06 1999
    @@ -0,0 +1,2 @@
    +Edit the makefile, *uncomment* the line for strsep.o
    +and *uncomment* the BASS_LIBS that calls -lnsl -lsocket -lresolv
    diff -uN bass-1.0.7/bind.c bass/bind.c
    --- bass-1.0.7/bind.c	Sun Aug  8 12:43:51 1999
    +++ bass/bind.c	Sun Aug 15 08:12:37 1999
    @@ -69,7 +69,7 @@
      dnsv = (HEADER *) vquery;
    
      if(dnsi->rcode) {
    -  errno = EBADRQC;
    +  errno = EINVAL;
       return -1;
      } else {
         if(dnsv->rcode) {
    diff -uN bass-1.0.7/cgi.c bass/cgi.c
    --- bass-1.0.7/cgi.c	Sun Aug  8 12:43:51 1999
    +++ bass/cgi.c	Sun Aug 15 08:12:37 1999
    @@ -78,7 +78,7 @@
      /* Cgi not installed */
      if(!strstr(*response, CGI_HTTP_HEADER_10) &&
         !strstr(*response, CGI_HTTP_HEADER_11)) {
    -  errno = EBADRQC;
    +  errno = EINVAL;
       return -1;
      }
    
    diff -uN bass-1.0.7/icmp.h bass/icmp.h
    --- bass-1.0.7/icmp.h	Sun Aug  8 12:43:51 1999
    +++ bass/icmp.h	Mon Aug 16 15:17:15 1999
    @@ -13,8 +13,26 @@
    
     */
    
    -#include <netinet/ip_icmp.h>
    +#include <netinet/in_systm.h>
     #include <netinet/ip.h>
    +#include <netinet/ip_icmp.h>
    +
    +#if !defined(__linux__)
    +struct iphdr
    +{
    +#if BYTE_ORDER == LITTLE_ENDIAN
    +  unsigned char ihl:4, version:4, tos;
    +#elif BYTE_ORDER == BIG_ENDIAN
    +  unsigned char version:4, ihl:4, tos;
    +#else
    +#error "What is the BYTE_ORDER?"
    +#endif
    +  unsigned short tot_len, id, frag_off;
    +  unsigned char ttl, protocol;
    +  unsigned short check;
    +  unsigned int saddr, daddr;
    +};
    +#endif
    
     #define LOCAL_ICMP
     #ifndef LOCAL_ICMP
    diff -uN bass-1.0.7/imapd.c bass/imapd.c
    --- bass-1.0.7/imapd.c	Sun Aug  8 12:43:51 1999
    +++ bass/imapd.c	Sun Aug 15 08:12:37 1999
    @@ -56,7 +56,7 @@
         !(imap_flavour = strsep(&sepregister, delim)) ||
           strncasecmp(imap_flavour, S_IMAP, strlen(S_IMAP)) != 0 ||
         !(version = strsep(&sepregister, delim)))
    - { close(tcpfd); errno = EPROTO; return -1; }
    + { close(tcpfd); errno = ENOPROTOOPT; return -1; }
    
      if(!strcmp(imap_flavour, S_IMAP_2BIS))
      {
    @@ -72,7 +72,7 @@
      else
      {
        close(tcpfd);
    -   errno = EPROTO;
    +   errno = ENOPROTOOPT;
        return -1;
      }
     	
    diff -uN bass-1.0.7/qpopper.c bass/qpopper.c
    --- bass-1.0.7/qpopper.c	Sun Aug  8 12:43:51 1999
    +++ bass/qpopper.c	Sun Aug 15 08:12:37 1999
    @@ -44,7 +44,7 @@
    
      if( !strstr(serverid, "QPOP") && !strstr(serverid, "QUALCOMM") ) {
       close(tcpfd);
    -  errno = EPROTO; return -1;
    +  errno = ENOPROTOOPT; return -1;
      } else {
         if((version = strstr(serverid, S_VERSION)))
         {
    diff -uN bass-1.0.7/rpc.c bass/rpc.c
    --- bass-1.0.7/rpc.c	Sun Aug  8 12:43:51 1999
    +++ bass/rpc.c	Mon Aug 16 21:56:42 1999
    @@ -148,9 +148,9 @@
      tt_client = tclnttcp_create(&raddr, TOOLTALK_RPC, TOOLTALK_VERS,
     		             &rpcsock, 0, 0, timer);
      if(!tt_client) {
    -  /*-- Traditionally ECOMM has nothing to do with our situation. But we
    +  /*-- Traditionally EPROTONOSUPPORT has nothing to do with our situation. But we
            endow it a NEW meaning: Any RPC communications failure. --*/
    -  if(errno != ETIMEDOUT) errno = ECOMM;
    +  if(errno != ETIMEDOUT) errno = EPROTONOSUPPORT;
       return -1;
      }
    
    @@ -200,7 +200,7 @@
      if(!(mount_client = clntudp_create(&raddr, MOUNTD_RPC, MOUNTD_VERS,
     	                       retry_timeout, &rpcsock)))
      {
    -  errno = ECOMM;
    +  errno = EPROTONOSUPPORT;
       return -1;
      }
    
    @@ -230,7 +230,7 @@
         log("%s - [%s] RPC request timed out.",
                   rpc_hooks[hook_slot].rpc_alias, host);
         break;
    -   case ECOMM		:
    +   case EPROTONOSUPPORT		:
         log("%s - [%s] RPC service communication error.",
     	      rpc_hooks[hook_slot].rpc_alias, host);
         break;
    diff -uN bass-1.0.7/strsep.c bass/strsep.c
    --- bass-1.0.7/strsep.c	Wed Dec 31 16:00:00 1969
    +++ bass/strsep.c	Mon Aug 16 15:22:28 1999
    @@ -0,0 +1,85 @@
    +/*	$OpenBSD: strsep.c,v 1.3 1997/08/20 04:28:14 millert Exp $	*/
    +
    +/*-
    + * Copyright (c) 1990, 1993
    + *	The Regents of the University of California.  All rights reserved.
    + *
    + * Redistribution and use in source and binary forms, with or without
    + * modification, are permitted provided that the following conditions
    + * are met:
    + * 1. Redistributions of source code must retain the above copyright
    + *    notice, this list of conditions and the following disclaimer.
    + * 2. Redistributions in binary form must reproduce the above copyright
    + *    notice, this list of conditions and the following disclaimer in the
    + *    documentation and/or other materials provided with the distribution.
    + * 3. All advertising materials mentioning features or use of this software
    + *    must display the following acknowledgement:
    + *	This product includes software developed by the University of
    + *	California, Berkeley and its contributors.
    + * 4. Neither the name of the University nor the names of its contributors
    + *    may be used to endorse or promote products derived from this software
    + *    without specific prior written permission.
    + *
    + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
    + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    + * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
    + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    + * SUCH DAMAGE.
    + */
    +
    +#include <string.h>
    +#include <stdio.h>
    +
    +#if defined(LIBC_SCCS) && !defined(lint)
    +#if 0
    +static char sccsid[] = "@(#)strsep.c	8.1 (Berkeley) 6/4/93";
    +#else
    +static char *rcsid = "$OpenBSD: strsep.c,v 1.3 1997/08/20 04:28:14 millert Exp $";
    +#endif
    +#endif /* LIBC_SCCS and not lint */
    +
    +/*
    + * Get next token from string *stringp, where tokens are possibly-empty
    + * strings separated by characters from delim.
    + *
    + * Writes NULs into the string at *stringp to end tokens.
    + * delim need not remain constant from call to call.
    + * On return, *stringp points past the last NUL written (if there might
    + * be further tokens), or is NULL (if there are definitely no more tokens).
    + *
    + * If *stringp is NULL, strsep returns NULL.
    + */
    +char *
    +strsep(stringp, delim)
    +	register char **stringp;
    +	register const char *delim;
    +{
    +	register char *s;
    +	register const char *spanp;
    +	register int c, sc;
    +	char *tok;
    +
    +	if ((s = *stringp) == NULL)
    +		return (NULL);
    +	for (tok = s;;) {
    +		c = *s++;
    +		spanp = delim;
    +		do {
    +			if ((sc = *spanp++) == c) {
    +				if (c == 0)
    +					s = NULL;
    +				else
    +					s[-1] = 0;
    +				*stringp = s;
    +				return (tok);
    +			}
    +		} while (sc != 0);
    +	}
    +	/* NOTREACHED */
    +}
    diff -uN bass-1.0.7/wingate.c bass/wingate.c
    --- bass-1.0.7/wingate.c	Sun Aug  8 12:43:51 1999
    +++ bass/wingate.c	Sun Aug 15 08:12:38 1999
    @@ -41,7 +41,7 @@
       if(!setjmp(jmpbuf))
       {
        if((n = read(sockfd, response + bytes, MAX_RESPONSE_SIZE - bytes)) <= 0)
    -   { errno = EPROTO; goto fail; }
    +   { errno = ENOPROTOOPT; goto fail; }
        alarm(0);
    
        for(i = 0; i<n; i++)
    
    
    --
    Corporations are not evil. That kind of anthropomorphism is inappropriate.
    Corporations are too stupid to be evil, only people can be that.  -jwz
    



    This archive was generated by hypermail 2b30 : Fri Apr 13 2001 - 14:57:06 PDT