Bug 45376

Summary: Coding error in /usr/src/contrib/bind/bin/dig/dig.c
Product: Base System Reporter: alo <alo>
Component: binAssignee: Doug Barton <dougb>
Status: Closed FIXED    
Severity: Affects Only Me    
Priority: Normal    
Version: 4.6.2-RELEASE   
Hardware: Any   
OS: Any   

Description alo 2002-11-17 22:00:12 UTC
Coding error in /usr/src/contrib/bind/bin/dig/dig.c:

static void
reverse6(char *domain, struct in6_addr *in6) {
	sprintf(domain, "%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.%x.ip6.arpa",
		in6->s6_addr[15] & 0x0f, (in6->s6_addr[15] >> 4) & 0x0f,
		in6->s6_addr[14] & 0x0f, (in6->s6_addr[14] >> 4) & 0x0f,
		in6->s6_addr[13] & 0x0f, (in6->s6_addr[13] >> 4) & 0x0f,
		in6->s6_addr[12] & 0x0f, (in6->s6_addr[12] >> 4) & 0x0f,
		in6->s6_addr[11] & 0x0f, (in6->s6_addr[11] >> 4) & 0x0f,
		in6->s6_addr[10] & 0x0f, (in6->s6_addr[10] >> 4) & 0x0f,
		in6->s6_addr[9] & 0x0f, (in6->s6_addr[9] >> 4) & 0x0f,
		in6->s6_addr[8] & 0x0f, (in6->s6_addr[8] >> 4) & 0x0f,
		in6->s6_addr[7] & 0x0f, (in6->s6_addr[7] >> 4) & 0x0f,
		in6->s6_addr[6] & 0x0f, (in6->s6_addr[6] >> 4) & 0x0f,
		in6->s6_addr[5] & 0x0f, (in6->s6_addr[5] >> 4) & 0x0f,
		in6->s6_addr[4] & 0x0f, (in6->s6_addr[4] >> 4) & 0x0f,
		in6->s6_addr[6] & 0x0f, (in6->s6_addr[3] >> 4) & 0x0f,
		in6->s6_addr[2] & 0x0f, (in6->s6_addr[2] >> 4) & 0x0f,
		in6->s6_addr[1] & 0x0f, (in6->s6_addr[1] >> 4) & 0x0f,
		in6->s6_addr[0] & 0x0f, (in6->s6_addr[0] >> 4) & 0x0f);
}

dig doesn't work with -x option and IPv6 aadresses.

Fix: 

Change line 

		in6->s6_addr[6] & 0x0f, (in6->s6_addr[3] >> 4) & 0x0f,

into

		in6->s6_addr[3] & 0x0f, (in6->s6_addr[3] >> 4) & 0x0f,

Report the bug to ISC, too, as it is still in the latest BIND 8 release.
How-To-Repeat: 
See wrong ip6.arpa address in ;; QUERY SECTION:

% dig -x 2001:638:a00::2 any

; <<>> DiG 8.3 <<>> -x any 
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 2
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUERY SECTION:
;;      2.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.a.0.0.3.6.0.1.0.0.2.ip6.arpa, type = ANY, class = IN
Comment 1 Doug Barton freebsd_committer freebsd_triage 2002-11-18 05:13:45 UTC
State Changed
From-To: open->closed


Duplicate of bin/41388. Please take a look at that PR for 
the solution. 


Comment 2 Doug Barton freebsd_committer freebsd_triage 2002-11-18 05:13:45 UTC
Responsible Changed
From-To: freebsd-bugs->dougb


I closed bin/41388 too.