Current 2.3 under Solaris 7/x86 ...

The Hermit Hacker scrappy at hub.org
Wed Jun 14 16:09:01 UTC 2000


No change ... I'm doing a 'make distclean;./configure;make update', just
in case maybe its something *I'm* doing wrong?

#0  0x806628e in CMDmode (ac=2, av=0x810bd00) at commands.c:561
561             Reply("%d %s InterNetNews NNRP server %s ready (%s).\r\n",
(gdb) list
556     CMDmode(ac, av)
557         int         ac;
558         char        *av[];
559     {
560         if (caseEQ(av[1], "reader"))
561             Reply("%d %s InterNetNews NNRP server %s ready (%s).\r\n",
562                    PERMcanpost ? NNTP_POSTOK_VAL : NNTP_NOPOSTOK_VAL,
563                    PERMaccessconf->pathhost, inn_version_string,
564                    PERMcanpost ? "posting ok" : "no posting");
565         else
(gdb) print *PERMaccessconf
$1 = {}
(gdb) print PERMaccessconf
$2 = (ACCESSGROUP *) 0x0
(gdb) 



On Wed, 14 Jun 2000, Katsuhiro Kondou wrote:

> In article <Pine.BSF.4.21.0006140853240.5938-100000 at thelab.hub.org>,
> 	The Hermit Hacker <scrappy at hub.org> wrote;
> 
> } Just re-cvs'd my source tree 2 min ago, and suspect that maybe Russ's
> } recent commits might have hosed this patch? 
> 
> Hm, I don't think so.  Russ's commit did not reach my patch.
> Anyway here again the patch which includes h_error fix.
> This is against CURRENT repository.
> -- 
> Katsuhiro Kondou
> 
> --- MANIFEST.orig	Tue Jun 13 12:04:07 2000
> +++ MANIFEST	Wed Jun 14 12:49:15 2000
> @@ -337,6 +337,7 @@
>  lib/gettime.c                         Get time and timezone info
>  lib/grpalias.c                        Group alias code used for OV3
>  lib/hash.c                            Create hash from message ID
> +lib/herror.c                          Error reporting for resolver
>  lib/inet_aton.c                       Extra source for inet_aton routine
>  lib/inet_ntoa.c                       Convert inaddr to string (BSD)
>  lib/inndcomm.c                        Library routines to talk to innd
> --- configure.in.orig	Wed Jun 14 19:23:01 2000
> +++ configure.in	Wed Jun 14 19:17:13 2000
> @@ -993,7 +993,7 @@
>  
>  dnl If we can't find any of the following, we have replacements for them.
>  AC_REPLACE_FUNCS(getopt inet_aton inet_ntoa pread pwrite strcasecmp \
> -                 strdup strerror strspn setenv)
> +                 strdup strerror strspn setenv herror)
>  
>  MISSING_OBJ="$LIBOBJS"
>  MISSING_SRC=`echo "$MISSING_OBJ" | sed 's/\.o/.c/g'`
> --- configure.orig	Wed Jun 14 19:28:53 2000
> +++ configure	Wed Jun 14 19:29:29 2000
> @@ -6342,7 +6342,7 @@
>  fi
>  
>  for ac_func in getopt inet_aton inet_ntoa pread pwrite strcasecmp \
> -                 strdup strerror strspn setenv
> +                 strdup strerror strspn setenv herror
>  do
>  echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
>  echo "configure:6349: checking for $ac_func" >&5
> --- innfeed/host.c.orig	Wed Jan  5 06:46:30 2000
> +++ innfeed/host.c	Wed Jun 14 13:09:41 2000
> @@ -1132,6 +1132,7 @@
>    char **newIpAddrs = NULL;
>    struct in_addr ipAddr, *returnAddr ;
>    struct hostent *hostEnt ;
> +  char *msgstr[SMBUF] ;
>  
>    ASSERT(host->params != NULL);
>  
> @@ -1142,8 +1143,11 @@
>        if ( !inet_aton (host->params->ipName,&ipAddr) )
>  	{
>  	  if ((hostEnt = gethostbyname (host->params->ipName)) == NULL)
> -	    syslog (LOG_ERR, HOST_RESOLV_ERROR, host->params->peerName,
> -		    host->params->ipName, host_err_str ()) ;
> +	    {
> +	      herror (msgstr) ;
> +	      syslog (LOG_ERR, HOST_RESOLV_ERROR, host->params->peerName,
> +		    host->params->ipName, msgstr) ;
> +	    }
>  	  else
>  	    {
>  	      /* figure number of pointers that need space */
> --- innfeed/misc.c.orig	Sun Nov 21 10:00:34 1999
> +++ innfeed/misc.c	Wed Jun 14 12:42:26 2000
> @@ -209,41 +209,6 @@
>  }
>  
>  
> -
> -static const char * const pvt_h_errlist[] = {
> -  "Resolver Error 0 (no error)",
> -  "Unknown host",                         /* 1 HOST_NOT_FOUND */
> -  "Host name lookup failure",             /* 2 TRY_AGAIN */
> -  "Unknown server error",                 /* 3 NO_RECOVERY */
> -  "No address associated with name",      /* 4 NO_ADDRESS */
> -};
> -
> -static int pvt_h_nerr = (sizeof pvt_h_errlist / sizeof pvt_h_errlist[0]);
> -
> -#if defined(hpux) || defined(__hpux) || defined(_SCO_DS)
> -extern int h_errno;
> -#endif
> -
> -/* return a friendly string for the current value of h_errno. Pinched from
> -   Stevens */
> -const char *host_err_str (void)
> -{
> -  static char msgstr [200] ;
> -
> -  if (h_errno != 0)
> -    {
> -      if (h_errno > 0 && h_errno < pvt_h_nerr)
> -        sprintf (msgstr,"(%s)", pvt_h_errlist[h_errno]) ;
> -      else
> -        sprintf (msgstr,"(herrno = %d)", h_errno) ;
> -    }
> -  else
> -    msgstr [0] = '\0' ;
> -
> -  return msgstr ;
> -}
> -
> -
>  /* return true if the file exists and is a regular file. */
>  bool fileExistsP (const char *filename)
>  {
> --- /dev/null	Mon Jun  5 10:50:00 2000
> +++ lib/herror.c	Wed Jun 14 12:38:41 2000
> @@ -0,0 +1,31 @@
> +#include <sys/types.h>
> +#include <netdb.h>
> +
> +static const char * const pvt_h_errlist[] = {
> +  "Resolver Error 0 (no error)",
> +  "Unknown host",                         /* 1 HOST_NOT_FOUND */
> +  "Host name lookup failure",             /* 2 TRY_AGAIN */
> +  "Unknown server error",                 /* 3 NO_RECOVERY */
> +  "No address associated with name",      /* 4 NO_ADDRESS */
> +};
> +
> +static int pvt_h_nerr = (sizeof pvt_h_errlist / sizeof pvt_h_errlist[0]);
> +
> +#if defined(hpux) || defined(__hpux) || defined(_SCO_DS)
> +extern int h_errno;
> +#endif
> +
> +/* return a friendly string for the current value of h_errno. Pinched from
> +   Stevens */
> +void *herror(char *msgstr)
> +{
> +  if (h_errno != 0)
> +    {
> +      if (h_errno > 0 && h_errno < pvt_h_nerr)
> +        sprintf (msgstr,"(%s)", pvt_h_errlist[h_errno]) ;
> +      else
> +        sprintf (msgstr,"(herrno = %d)", h_errno) ;
> +    }
> +  else
> +    msgstr [0] = '\0' ;
> +}
> --- nnrpd/nnrpd.c.orig	Mon Jun 12 10:27:12 2000
> +++ nnrpd/nnrpd.c	Wed Jun 14 12:48:27 2000
> @@ -83,6 +83,9 @@
>  #if HAVE_GETSPNAM
>  STATIC char	*ShadowGroup;
>  #endif
> +#if	defined(DO_NNRP_GETHOSTBYADDR)
> +STATIC char 	HostErrorStr[SMBUF];
> +#endif	/* defined(DO_NNRP_GETHOSTBYADDR) */
>  
>  extern FUNCTYPE	CMDauthinfo();
>  extern FUNCTYPE	CMDdate();
> @@ -344,31 +347,33 @@
>  
>  
>  #if	defined(DO_NNRP_GETHOSTBYADDR)
> +
>  /*
>  **  Convert an IP address to a hostname.  Don't trust the reverse lookup,
>  **  since anyone can fake .in-addr.arpa entries.
>  */
>  STATIC BOOL
> -Address2Name(ap, hostname, i)
> -    register INADDR		*ap;
> -    register char		*hostname;
> -    register int		i;
> +Address2Name(INADDR *ap, char *hostname, int i)
>  {
> -    register char		*p;
> -    register struct hostent	*hp;
> +    char		*p;
> +    struct hostent	*hp;
>  #if	defined(h_addr)
> -    register char		**pp;
> +    char		**pp;
>  #endif
>  
>      /* Get the official hostname, store it away. */
> -    if ((hp = gethostbyaddr((char *)ap, sizeof *ap, AF_INET)) == NULL)
> +    if ((hp = gethostbyaddr((char *)ap, sizeof *ap, AF_INET)) == NULL) {
> +	herror(HostErrorStr);
>  	return FALSE;
> +    }
>      (void)strncpy(hostname, hp->h_name, i);
>      hostname[i - 1] = '\0';
>  
>      /* Get addresses for this host. */
> -    if ((hp = gethostbyname(hostname)) == NULL)
> +    if ((hp = gethostbyname(hostname)) == NULL) {
> +	herror(HostErrorStr);
>  	return FALSE;
> +    }
>  
>      /* Make sure one of those addresses is the address we got. */
>  #if	defined(h_addr)
> @@ -413,6 +418,7 @@
>      char		*ClientAddr;
>      char		accesslist[BIG_BUFFER];
>      int                 code;
> +    static ACCESSGROUP	*authconf;
>  
>      /* Get the peer's name. */
>      length = sizeof sin;
> @@ -439,11 +445,18 @@
>  
>  	/* Get client's name. */
>  #if	defined(DO_NNRP_GETHOSTBYADDR)
> +	HostErrorStr[0] = '\0';
>  	if (!Address2Name(&sin.sin_addr, ClientHost, (int)sizeof ClientHost)) {
>  	    (void)strcpy(ClientHost, inet_ntoa(sin.sin_addr));
> -	    syslog(L_NOTICE,
> -		"? cant gethostbyaddr %s %m -- using IP address for access",
> -		ClientHost);
> +	    if (HostErrorStr[0] == '\0') {
> +		syslog(L_NOTICE,
> +		    "? cant gethostbyaddr %s %m -- using IP address for access",
> +		    ClientHost);
> +	    } else {
> +		syslog(L_NOTICE,
> +		    "? cant gethostbyaddr %s %s -- using IP address for access",
> +		    ClientHost, HostErrorStr);
> +	    }
>  	    ClientAddr = ClientHost;
>              ClientIP = inet_addr(ClientHost);
>  	}
> @@ -464,11 +477,18 @@
>  	    ExitWithStats(1, TRUE);
>  	}
>  #ifdef DO_NNRP_GETHOSTBYADDR
> +	HostErrorStr[0] = '\0';
>  	if (!Address2Name(&sin.sin_addr, ServerHost, sizeof(ServerHost))) {
>  	    strcpy(ServerHost, inet_ntoa(sin.sin_addr));
> -	    syslog(L_NOTICE,
> -		   "? cant gethostbyaddr %s %m -- using IP address for access",
> -		   ClientHost);
> +	    if (HostErrorStr[0] == '\0') {
> +		syslog(L_NOTICE,
> +		    "? cant gethostbyaddr %s %m -- using IP address for access",
> +		    ClientHost);
> +	    } else {
> +		syslog(L_NOTICE,
> +		    "? cant gethostbyaddr %s %s -- using IP address for access",
> +		    ClientHost, HostErrorStr);
> +	    }
>  	}
>  #else
>          strcpy(ServerHost, inet_ntoa(sin.sin_addr));
> @@ -489,6 +509,10 @@
>  	}
>  	NGgetlist(&PERMreadlist, accesslist);
>  	PERMpostlist = PERMreadlist;
> +	if (!authconf)
> +	    authconf = NEW(ACCESSGROUP, 1);
> +	PERMaccessconf = authconf;
> +	SetDefaultAccess(PERMaccessconf);
>      } else {
>  #endif	/* DO_PERL */
>  
> @@ -506,6 +530,10 @@
>  	    PERMspecified = NGgetlist(&PERMreadlist, accesslist);
>  	    PERMpostlist = PERMreadlist;
>  	}
> +	if (!authconf)
> +	    authconf = NEW(ACCESSGROUP, 1);
> +	PERMaccessconf = authconf;
> +	SetDefaultAccess(PERMaccessconf);
>      } else {
>  #endif	/* DO_PYTHON */
>  	PERMgetaccess();
> --- nnrpd/nnrpd.h.orig	Mon Jun 12 10:27:12 2000
> +++ nnrpd/nnrpd.h	Wed Jun 14 00:06:32 2000
> @@ -203,6 +203,7 @@
>  extern BOOL		ParseDistlist();
>  extern READTYPE		READline();
>  extern char		*OVERGetHeader(char *p, int field);
> +extern void SetDefaultAccess(ACCESSGROUP*);
>  
>  #if defined(STDC_HEADERS) || defined(HAVE_STDARG_H)
>  extern void             Reply(const char *fmt, ...);
> --- nnrpd/perm.c.orig	Wed Jun 14 00:06:58 2000
> +++ nnrpd/perm.c	Wed Jun 14 07:10:45 2000
> @@ -85,7 +85,6 @@
>  static METHOD *copy_method(METHOD*);
>  static void free_method(METHOD*);
>  static AUTHGROUP *copy_authgroup(AUTHGROUP*);
> -static void setdefaultaccess(ACCESSGROUP*);
>  static void free_authgroup(AUTHGROUP*);
>  static ACCESSGROUP *copy_accessgroup(ACCESSGROUP*);
>  static void free_accessgroup(ACCESSGROUP*);
> @@ -403,13 +402,15 @@
>      return(ret);
>  }
>  
> -static void setdefaultaccess(ACCESSGROUP *curaccess)
> +void SetDefaultAccess(ACCESSGROUP *curaccess)
>  {
> +    curaccess->allownewnews = innconf->allownewnews;;
> +    curaccess->locpost = FALSE;
> +    curaccess->allowapproved = FALSE;
>      curaccess->localtime = FALSE;
>      curaccess->strippath = FALSE;
>      curaccess->nnrpdperlfilter = TRUE;
>      curaccess->nnrpdpythonfilter = TRUE;
> -    curaccess->allownewnews = innconf->allownewnews;;
>      if (innconf->fromhost)
>  	curaccess->fromhost = COPY(innconf->fromhost);
>      if (innconf->pathhost)
> @@ -442,6 +443,8 @@
>      curaccess->backoff_trigger = innconf->backoff_trigger;
>      curaccess->nnrpdcheckart = innconf->nnrpdcheckart;
>      curaccess->nnrpdauthsender = innconf->nnrpdauthsender;
> +    curaccess->virtualhost = FALSE;
> +    curaccess->newsmaster = NULL;
>  }
>  
>  static void free_authgroup(AUTHGROUP *del)
> @@ -1025,7 +1028,7 @@
>  			curaccess = NEW(ACCESSGROUP, 1);
>  			memset((POINTER) curaccess, 0, sizeof(ACCESSGROUP));
>  			memset(ConfigBit, '\0', ConfigBitsize);
> -			setdefaultaccess(curaccess);
> +			SetDefaultAccess(curaccess);
>  		    }
>  		    curaccess->name = str;
>  		    inwhat = 2;
> @@ -1118,7 +1121,7 @@
>  		    (void)memset((POINTER)curgroup->access, 0,
>  		      sizeof(ACCESSGROUP));
>  		    memset(ConfigBit, '\0', ConfigBitsize);
> -		    setdefaultaccess(curgroup->access);
> +		    SetDefaultAccess(curgroup->access);
>  		}
>  		accessdecl_parse(curgroup->access, cf->f, tok);
>  		break;
> @@ -1327,6 +1330,7 @@
>      int i;
>      char *cp, **list;
>      char *user[2];
> +    static ACCESSGROUP *noaccessconf;
>  
>      if (ConfigBit == NULL) {
>  	if (PERMMAX % 8 == 0)
> @@ -1416,8 +1420,13 @@
>  	    }
>  	} else
>  	    VirtualPathlen = 0;
> -    } else
> +    } else {
> +	if (!noaccessconf)
> +	    noaccessconf = NEW(ACCESSGROUP, 1);
> +	PERMaccessconf = noaccessconf;
> +	SetDefaultAccess(PERMaccessconf);
>  	syslog(L_TRACE, "%s no_access_realm", ClientHost);
> +    }
>  }
>  
>  /* strip blanks out of a string */
> 
> 

Marc G. Fournier                   ICQ#7615664               IRC Nick: Scrappy
Systems Administrator @ hub.org 
primary: scrappy at hub.org           secondary: scrappy@{freebsd|postgresql}.org 




More information about the inn-workers mailing list