Merge pull request #231 from rolandshoemaker/master
Correct CAA len method and octet packing buffer
This commit is contained in:
commit
e59f851c91
2
msg.go
2
msg.go
|
@ -921,7 +921,7 @@ func packStructValue(val reflect.Value, msg []byte, off int, compression map[str
|
||||||
copy(msg[off:off+len(s)], s)
|
copy(msg[off:off+len(s)], s)
|
||||||
off += len(s)
|
off += len(s)
|
||||||
case `dns:"octet"`:
|
case `dns:"octet"`:
|
||||||
bytesTmp := make([]byte, 0)
|
bytesTmp := make([]byte, 256)
|
||||||
off, err = packOctetString(fv.String(), msg, off, bytesTmp)
|
off, err = packOctetString(fv.String(), msg, off, bytesTmp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return lenmsg, err
|
return lenmsg, err
|
||||||
|
|
|
@ -1477,3 +1477,32 @@ func TestParseCAA(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPackCAA(t *testing.T) {
|
||||||
|
m := new(Msg)
|
||||||
|
record := new(CAA)
|
||||||
|
record.Hdr = RR_Header{Name: "example.com.", Rrtype: TypeCAA, Class: ClassINET, Ttl: 0}
|
||||||
|
record.Tag = "issue"
|
||||||
|
record.Value = "symantec.com"
|
||||||
|
record.Flag = 1
|
||||||
|
|
||||||
|
m.Answer = append(m.Answer, record)
|
||||||
|
bytes, err := m.Pack()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to pack msg: %v", err)
|
||||||
|
}
|
||||||
|
if err := m.Unpack(bytes); err != nil {
|
||||||
|
t.Fatalf("failed to unpack msg: %v", err)
|
||||||
|
}
|
||||||
|
if len(m.Answer) != 1 {
|
||||||
|
t.Fatalf("incorrect number of answers unpacked")
|
||||||
|
}
|
||||||
|
rr := m.Answer[0].(*CAA)
|
||||||
|
if rr.Tag != "issue" {
|
||||||
|
t.Fatalf("invalid tag for unpacked answer")
|
||||||
|
} else if rr.Value != "symantec.com" {
|
||||||
|
t.Fatalf("invalid value for unpacked answer")
|
||||||
|
} else if rr.Flag != 1 {
|
||||||
|
t.Fatalf("invalid flag for unpacked answer")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
2
types.go
2
types.go
|
@ -1569,7 +1569,7 @@ type CAA struct {
|
||||||
|
|
||||||
func (rr *CAA) Header() *RR_Header { return &rr.Hdr }
|
func (rr *CAA) Header() *RR_Header { return &rr.Hdr }
|
||||||
func (rr *CAA) copy() RR { return &CAA{*rr.Hdr.copyHeader(), rr.Flag, rr.Tag, rr.Value} }
|
func (rr *CAA) copy() RR { return &CAA{*rr.Hdr.copyHeader(), rr.Flag, rr.Tag, rr.Value} }
|
||||||
func (rr *CAA) len() int { return rr.Hdr.len() + 1 + len(rr.Tag) + len(rr.Value)/2 }
|
func (rr *CAA) len() int { return rr.Hdr.len() + 2 + len(rr.Tag) + len(rr.Value) }
|
||||||
func (rr *CAA) String() string {
|
func (rr *CAA) String() string {
|
||||||
return rr.Hdr.String() + strconv.Itoa(int(rr.Flag)) + " " + rr.Tag + " " + sprintCAAValue(rr.Value)
|
return rr.Hdr.String() + strconv.Itoa(int(rr.Flag)) + " " + rr.Tag + " " + sprintCAAValue(rr.Value)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue