Skip to content

Commit 3cd3024

Browse files
gryphiusldez
andauthored
fix: ensure case-insensitive comparison of CNAME records (#1956)
Co-authored-by: Fernandez Ludovic <[email protected]>
1 parent d4f31eb commit 3cd3024

File tree

2 files changed

+41
-2
lines changed

2 files changed

+41
-2
lines changed

challenge/dns01/cname.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package dns01
22

3-
import "github.com/miekg/dns"
3+
import (
4+
"strings"
5+
6+
"github.com/miekg/dns"
7+
)
48

59
// Update FQDN with CNAME if any.
610
func updateDomainWithCName(r *dns.Msg, fqdn string) string {
711
for _, rr := range r.Answer {
812
if cn, ok := rr.(*dns.CNAME); ok {
9-
if cn.Hdr.Name == fqdn {
13+
if strings.EqualFold(cn.Hdr.Name, fqdn) {
1014
return cn.Target
1115
}
1216
}

challenge/dns01/cname_test.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package dns01
2+
3+
import (
4+
"strings"
5+
"testing"
6+
7+
"github.com/miekg/dns"
8+
"github.com/stretchr/testify/assert"
9+
)
10+
11+
func Test_updateDomainWithCName_caseInsensitive(t *testing.T) {
12+
qname := "_acme-challenge.uppercase-test.example.com."
13+
cnameTarget := "_acme-challenge.uppercase-test.cname-target.example.com."
14+
15+
msg := &dns.Msg{
16+
MsgHdr: dns.MsgHdr{
17+
Authoritative: true,
18+
},
19+
Answer: []dns.RR{
20+
&dns.CNAME{
21+
Hdr: dns.RR_Header{
22+
Name: strings.ToUpper(qname), // CNAME names are case-insensitive
23+
Rrtype: dns.TypeCNAME,
24+
Class: dns.ClassINET,
25+
Ttl: 3600,
26+
},
27+
Target: cnameTarget,
28+
},
29+
},
30+
}
31+
32+
fqdn := updateDomainWithCName(msg, qname)
33+
34+
assert.Equal(t, cnameTarget, fqdn)
35+
}

0 commit comments

Comments
 (0)