Skip to content

panic: runtime error: slice bounds out of range [1:0] in dns.go SignerName[1:] #100

@esara

Description

@esara

the dns decoder may panic, if the passed in name only has a single dot (maybe an edge case)

panic: runtime error: slice bounds out of range [1:0]                                                                                                                                                                                                                                                                                                         │

goroutine 246 [running]:                                                                                                                                                                                                                                                                                                                                      │
github.com/gopacket/gopacket/layers.(*DNSRRSIG).decode(0xc002807590, {0xc000d54faa, 0x18e, 0x44?}, 0x100000176ba98?)                                                                                                                                                                                                                                          │
    /Users/name/go/pkg/mod/github.com/gopacket/gopacket@v1.3.1/layers/dns.go:1267 +0x2d1                                                                                                                                                                                                                                                                   │
github.com/gopacket/gopacket/layers.(*DNSResourceRecord).decodeRData(0xc002807438, {0xc000d54faa?, 0x230?, 0x412?}, 0x2?, 0xc00176ba98?)                                                                                                                                                                                                                      │
    /Users/name/go/pkg/mod/github.com/gopacket/gopacket@v1.3.1/layers/dns.go:1060 +0x994                                                                                                                                                                                                                                                                   │
github.com/gopacket/gopacket/layers.(*DNSResourceRecord).decode(0xc002807438, {0xc000d54faa, 0x412, 0x412}, 0x30b6f80?, {0xc00176b918?, 0x417245?}, 0xc00176ba98)                                                                                                                                                                                             │
    /Users/name/go/pkg/mod/github.com/gopacket/gopacket@v1.3.1/layers/dns.go:753 +0x1f4                                                                                                                                                                                                                                                                    │
github.com/gopacket/gopacket/layers.(*DNS).DecodeFromBytes(0xc0018379f0, {0xc000d54faa, 0x412, 0x412}, {0x365c500, 0x6030880})                                                                                                                                                                                                                                │
    /Users/name/go/pkg/mod/github.com/gopacket/gopacket@v1.3.1/layers/dns.go:377 +0x73b                                                                                                                                                                                                                                                                    │
github.com/inspektor-gadget/inspektor-gadget/pkg/gadgets/trace/dns/tracer.(*Tracer).parseDNSPacket(0xc00224c7b0, {0xc000d54f00, 0x4bc?, 0x0?}, 0xf0000000)                                                                                                                                                                                                    │
    /Users/name/go/pkg/mod/github.com/inspektor-gadget/inspektor-gadget@v0.34.0/pkg/gadgets/trace/dns/tracer/tracer.go:156 +0xf3                                                                                                                                                                                                                           │
github.com/inspektor-gadget/inspektor-gadget/pkg/networktracer.(*Tracer[...]).listen(0xc00009dfd0, 0x33325f0?, 0xc0012bdab0)                                                                                                                                                                                                                                  │
    /Users/name/go/pkg/mod/github.com/inspektor-gadget/inspektor-gadget@v0.34.0/pkg/networktracer/tracer.go:348 +0x1d8                                                                                                                                                                                                                                     │
created by github.com/inspektor-gadget/inspektor-gadget/pkg/networktracer.(*Tracer[...]).Run in goroutine 1                                                                                                                                                                                                                                                   │
    /Users/name/go/pkg/mod/github.com/inspektor-gadget/inspektor-gadget@v0.34.0/pkg/networktracer/tracer.go:251 +0xab5

possible safety check in
https://github.com/gopacket/gopacket/blob/master/layers/dns.go#L1266

if len(rrsig.SignerName) > 1 {
	rrsig.SignerName = rrsig.SignerName[1:] // Remove leading '.'
}

may I open a pr?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions