mirror of
https://github.com/coredns/coredns.git
synced 2026-07-10 09:40:12 -04:00
plugin/pkg/dnsutil: guard Join against an empty label slice (#8225)
This commit is contained in:
committed by
GitHub
parent
7abc21bc49
commit
9226f8a3aa
@@ -10,6 +10,9 @@ import (
|
|||||||
// the root label it is ignored. Not other syntax checks are performed.
|
// the root label it is ignored. Not other syntax checks are performed.
|
||||||
func Join(labels ...string) string {
|
func Join(labels ...string) string {
|
||||||
ll := len(labels)
|
ll := len(labels)
|
||||||
|
if ll == 0 {
|
||||||
|
return "."
|
||||||
|
}
|
||||||
if labels[ll-1] == "." {
|
if labels[ll-1] == "." {
|
||||||
return strings.Join(labels[:ll-1], ".") + "."
|
return strings.Join(labels[:ll-1], ".") + "."
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,3 +19,12 @@ func TestJoin(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestJoinEmpty(t *testing.T) {
|
||||||
|
// Join called with no labels must not index labels[ll-1] out of range; it
|
||||||
|
// returns the root name. Callers on the MX/SRV path can reach Join with an
|
||||||
|
// empty label slice.
|
||||||
|
if x := Join(); x != "." {
|
||||||
|
t.Errorf("expected %q, got %q", ".", x)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user