NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: PR/50367 CVS commit: src/lib/libc/net



The following reply was made to PR lib/50367; it has been noted by GNATS.

From: schaecsn <schaecsn%gmx.net@localhost>
To: gnats-bugs%NetBSD.org@localhost
Cc: lib-bug-people%netbsd.org@localhost,gnats-admin%netbsd.org@localhost,netbsd-bugs%netbsd.org@localhost
Subject: Re: PR/50367 CVS commit: src/lib/libc/net
Date: Mon, 26 Oct 2015 10:36:50 -0700 (PDT)

 Shouldn't the sister file getnetnamadr.c be changed as well? Something along this line:
 
 Index: lib/libc/net/getnetnamadr.c
 ===================================================================
 RCS file: /cvsroot/src/lib/libc/net/getnetnamadr.c,v
 retrieving revision 1.42
 diff -u -p -r1.42 getnetnamadr.c
 --- lib/libc/net/getnetnamadr.c	13 Mar 2012 21:13:41 -0000	1.42
 +++ lib/libc/net/getnetnamadr.c	26 Oct 2015 17:28:21 -0000
 @@ -77,6 +77,12 @@ __weak_alias(getnetbyaddr,_getnetbyaddr)
  __weak_alias(getnetbyname,_getnetbyname)
  #endif
  
 +#define maybe_ok(res, nm, ok) (((res)->options & RES_NOCHECKNAME) != 0U || \
 +                               (ok)(nm) != 0)
 +#define maybe_hnok(res, hn) maybe_ok((res), (hn), res_hnok)
 +#define maybe_dnok(res, dn) maybe_ok((res), (dn), res_dnok)
 +
 +
  extern int _net_stayopen;
  
  #define BYADDR 0
 @@ -105,7 +111,7 @@ static	struct netent net_entry;
  static	char *net_aliases[MAXALIASES];
  
  static int		parse_reversed_addr(const char *, in_addr_t *);
 -static struct netent	*getnetanswer(querybuf *, int, int);
 +static struct netent	*getnetanswer(res_state, querybuf *, int, int);
  static int		_files_getnetbyaddr(void *, void *, va_list);
  static int		_files_getnetbyname(void *, void *, va_list);
  static int		_dns_getnetbyaddr(void *, void *, va_list);
 @@ -159,7 +165,7 @@ parse_reversed_addr(const char *str, in_
  }
  
  static struct netent *
 -getnetanswer(querybuf *answer, int anslen, int net_i)
 +getnetanswer(res_state res,querybuf *answer, int anslen, int net_i)
  {
  	static char	n_name[MAXDNAME];
  	static char	netbuf[PACKETSZ];
 @@ -172,6 +178,7 @@ getnetanswer(querybuf *answer, int ansle
  	char		*in, *bp, **ap, *ep;
  
  	_DIAGASSERT(answer != NULL);
 +	_DIAGASSERT(res != NULL);
  
  	/*
  	 * find first satisfactory answer
 @@ -216,7 +223,7 @@ getnetanswer(querybuf *answer, int ansle
  	n_name[0] = '\0';
  	while (--ancount >= 0 && cp < eom) {
  		n = dn_expand(answer->buf, eom, cp, bp, (int)(ep - bp));
 -		if ((n < 0) || !res_dnok(bp))
 +		if ((n < 0) || !maybe_dnok(res, bp))
  			break;
  		cp += n;
  		(void)strlcpy(n_name, bp, sizeof(n_name));
 @@ -226,7 +233,7 @@ getnetanswer(querybuf *answer, int ansle
  		GETSHORT(n, cp);
  		if (class == C_IN && type == T_PTR) {
  			n = dn_expand(answer->buf, eom, cp, bp, (int)(ep - bp));
 -			if ((n < 0) || !res_hnok(bp)) {
 +			if ((n < 0) || !maybe_hnok(res, bp)) {
  				cp += n;
  				return NULL;
  			}
 @@ -359,7 +366,7 @@ _dns_getnetbyaddr(void *cbrv, void *cbda
  		return NS_NOTFOUND;
  	}
  	__res_put_state(res);
 -	np = getnetanswer(buf, anslen, BYADDR);
 +	np = getnetanswer(res, buf, anslen, BYADDR);
  	free(buf);
  	if (np) {
  		/* maybe net should be unsigned? */
 @@ -471,7 +478,7 @@ _dns_getnetbyname(void *cbrv, void *cbda
  		return NS_NOTFOUND;
  	}
  	__res_put_state(res);
 -	np = getnetanswer(buf, anslen, BYNAME);
 +	np = getnetanswer(res, buf, anslen, BYNAME);
  	free(buf);
  
  	if (np != NULL) {
 


Home | Main Index | Thread Index | Old Index