No subject


Tue Apr 2 00:56:56 UTC 2013


(*1)		} else if (soa_cnt == 1) {
			badsoa_msg = soa_zinfo(&zp_finish, rr_type_ptr, eom);
			if (badsoa_msg) {
				syslog(LOG_INFO,
				       "malformed SOA for zone %s: %s",
				       zp->z_origin, badsoa_msg);
				hp->rcode = FORMERR;
				return (-1);
			}
			if (zp_start.z_serial == zp_finish.z_serial) {
				methode = ISNOTIXFR;
			} else if (zp_finish.z_serial != serial_no) {
				syslog(LOG_INFO,
			       "Unexpected serial number for zone %s: %u",
					zp->z_origin, zp_finish.z_serial);
			}
(*2)			soa_cnt++;
			if ((methode == ISIXFR) || (soa_cnt > 2)) {
				return (result);
			}

1. This "else if" block is executed when soa_cnt is 1.
2. soa_zinfo() dose not change soa_cnt.  
3. At line (*2), soa_cnt is increased into 2.
4. And Next line, soa_cnt is compared with 2, but it would never larger
   than 2.

In bind-8.2.1, coding is something diffrent, simpley return here.

My rough analysis is up to here...

--
Takahiro Kambe <taca at sky.yamashina.kyoto.jp>


More information about the bind-users mailing list