Skip to content

Commit 28eaefc

Browse files
committed
dddtoBytes: reject values > 255
1 parent b9c22ac commit 28eaefc

1 file changed

Lines changed: 9 additions & 3 deletions

File tree

dnscrypt-proxy/dnsutils.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,12 @@ func removeEDNS0Options(msg *dns.Msg) bool {
267267
return true
268268
}
269269

270-
func dddToByte(s []byte) byte {
271-
return byte((s[0]-'0')*100 + (s[1]-'0')*10 + (s[2] - '0'))
270+
func dddToByte(s []byte) (byte, bool) {
271+
n := int(s[0]-'0')*100 + int(s[1]-'0')*10 + int(s[2]-'0')
272+
if n > 255 {
273+
return 0, false
274+
}
275+
return byte(n), true
272276
}
273277

274278
func PackTXTRR(s string) []byte {
@@ -282,7 +286,9 @@ func PackTXTRR(s string) []byte {
282286
break
283287
}
284288
if i+2 < len(bs) && isDigit(bs[i]) && isDigit(bs[i+1]) && isDigit(bs[i+2]) {
285-
msg = append(msg, dddToByte(bs[i:]))
289+
if b, ok := dddToByte(bs[i:]); ok {
290+
msg = append(msg, b)
291+
}
286292
i += 2
287293
} else if bs[i] == 't' {
288294
msg = append(msg, '\t')

0 commit comments

Comments
 (0)