Skip to content

Commit d5103ca

Browse files
authored
fix: guard against nil before calling string (#241)
Signed-off-by: Chris Gianelloni <[email protected]>
1 parent 4082866 commit d5103ca

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

internal/dns/dns.go

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ func startListener(server *dns.Server) {
8484
}
8585

8686
func handleQuery(w dns.ResponseWriter, r *dns.Msg) {
87+
if r.Question == nil {
88+
return
89+
}
8790
cfg := config.GetConfig()
8891
m := new(dns.Msg)
8992

@@ -165,6 +168,18 @@ func handleQuery(w dns.ResponseWriter, r *dns.Msg) {
165168
if cfg.Dns.RecursionEnabled {
166169
// Pick random nameserver for domain
167170
tmpNameserver := randomNameserverAddress(nameservers)
171+
if tmpNameserver == nil {
172+
m.SetRcode(r, dns.RcodeServerFailure)
173+
if err := w.WriteMsg(m); err != nil {
174+
slog.Error(
175+
"unable to get nameserver",
176+
)
177+
}
178+
slog.Error(
179+
"unable to get nameserver",
180+
)
181+
return
182+
}
168183
// Query the random domain nameserver we picked above
169184
resp, err := doQuery(r, tmpNameserver.String(), true)
170185
if err != nil {
@@ -469,9 +484,13 @@ func getAddressForNameFromResponse(msg *dns.Msg, recordName string) string {
469484
}
470485
switch v := retRR.(type) {
471486
case *dns.A:
472-
return v.A.String()
487+
if v.A != nil {
488+
return v.A.String()
489+
}
473490
case *dns.AAAA:
474-
return v.AAAA.String()
491+
if v.AAAA != nil {
492+
return v.AAAA.String()
493+
}
475494
}
476495
return ""
477496
}

0 commit comments

Comments
 (0)