if txt rdlength is 0, not read anymore

This commit is contained in:
soh335 2014-01-04 17:30:03 +09:00
parent 39ef03c034
commit e8a5f90957
2 changed files with 37 additions and 1 deletions

View File

@ -71,6 +71,42 @@ func TestPackUnpack2(t *testing.T) {
}
}
func TestPackUnpack3(t *testing.T) {
m := new(Msg)
m.Extra = make([]RR, 2)
m.Answer = make([]RR, 1)
dom := "miek.nl."
rr := new(A)
rr.Hdr = RR_Header{Name: dom, Rrtype: TypeA, Class: ClassINET, Ttl: 0}
rr.A = net.IPv4(127, 0, 0, 1)
x1 := new(TXT)
x1.Hdr = RR_Header{Name: dom, Rrtype: TypeTXT, Class: ClassINET, Ttl: 0}
x1.Txt = []string{}
x2 := new(TXT)
x2.Hdr = RR_Header{Name: dom, Rrtype: TypeTXT, Class: ClassINET, Ttl: 0}
x2.Txt = []string{"heelalaollo"}
m.Extra[0] = x1
m.Extra[1] = x2
m.Answer[0] = rr
b, err := m.Pack()
if err != nil {
t.Log("Packing failed")
t.Fail()
return
}
var unpackMsg Msg
err = unpackMsg.Unpack(b)
if err != nil {
t.Log("UnPacking failed")
t.Fail()
return
}
}
func TestBailiwick(t *testing.T) {
yes := map[string]string{
"miek.nl": "ns.miek.nl",

2
msg.go
View File

@ -763,7 +763,7 @@ func unpackStructValue(val reflect.Value, msg []byte, off int) (off1 int, err er
txt := make([]string, 0)
rdlength := off + int(val.FieldByName("Hdr").FieldByName("Rdlength").Uint())
Txts:
if off == lenmsg { // dyn. updates, no rdata is OK
if off == lenmsg || rdlength == off { // dyn. updates, no rdata is OK
break
}
l := int(msg[off])