Fix the ORIGIN appending
This commit is contained in:
parent
a21f7c6b30
commit
34a711372a
7
zscan.go
7
zscan.go
|
@ -10,9 +10,9 @@ import (
|
|||
)
|
||||
|
||||
// Only used when debugging the parser itself.
|
||||
var _DEBUG = false
|
||||
var _DEBUG = true
|
||||
|
||||
const maxTok = 512
|
||||
const maxTok = 1024
|
||||
|
||||
// Tokinize a RFC 1035 zone file. The tokenizer will normalize it:
|
||||
// * Add ownernames if they are left blank;
|
||||
|
@ -167,7 +167,7 @@ func parseZone(r io.Reader, f string, t chan Token, include int) {
|
|||
return
|
||||
}
|
||||
if h.Name[ld-1] != '.' {
|
||||
h.Name += origin
|
||||
h.Name += "." + origin
|
||||
}
|
||||
st = _EXPECT_OWNER_BL
|
||||
case _DIRTTL:
|
||||
|
@ -236,6 +236,7 @@ func parseZone(r io.Reader, f string, t chan Token, include int) {
|
|||
} else {
|
||||
origin = l.token
|
||||
}
|
||||
st = _EXPECT_OWNER_DIR
|
||||
case _EXPECT_OWNER_BL:
|
||||
if l.value != _BLANK {
|
||||
t <- Token{Error: &ParseError{f, "No blank after owner", l}}
|
||||
|
|
31
zscan_rr.go
31
zscan_rr.go
|
@ -6,7 +6,8 @@ import (
|
|||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
// TODO: SPF, TKEY, Unknown stuff, RR_URI, DHCID, TLSA
|
||||
|
||||
// TODO: SPF, TKEY, Unknown RRs, RR_URI, DHCID, TLSA
|
||||
|
||||
// Parse the rdata of each rrtype.
|
||||
// All data from the channel c is either _STRING or _BLANK.
|
||||
|
@ -64,7 +65,7 @@ func setRR(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
case TypeDS:
|
||||
return setDS(h, c, f)
|
||||
case TypeNAPTR:
|
||||
return setNAPTR(h, c, o, f)
|
||||
return setNAPTR(h, c, o, f)
|
||||
case TypeTXT:
|
||||
return setTXT(h, c, f)
|
||||
default:
|
||||
|
@ -142,7 +143,7 @@ func setNS(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
return nil, &ParseError{f, "bad NS Ns", l}
|
||||
}
|
||||
if rr.Ns[ld-1] != '.' {
|
||||
rr.Ns += o
|
||||
rr.Ns += "." + o
|
||||
}
|
||||
return rr, nil
|
||||
}
|
||||
|
@ -158,7 +159,7 @@ func setPTR(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
return nil, &ParseError{f, "bad PTR Ptr", l}
|
||||
}
|
||||
if rr.Ptr[ld-1] != '.' {
|
||||
rr.Ptr += o
|
||||
rr.Ptr += "." + o
|
||||
}
|
||||
return rr, nil
|
||||
}
|
||||
|
@ -181,7 +182,7 @@ func setMX(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
return nil, &ParseError{f, "bad MX Mx", l}
|
||||
}
|
||||
if rr.Mx[ld-1] != '.' {
|
||||
rr.Mx += o
|
||||
rr.Mx += "." + o
|
||||
}
|
||||
return rr, nil
|
||||
}
|
||||
|
@ -197,7 +198,7 @@ func setCNAME(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
return nil, &ParseError{f, "bad CNAME Cname", l}
|
||||
}
|
||||
if rr.Cname[ld-1] != '.' {
|
||||
rr.Cname += o
|
||||
rr.Cname += "." + o
|
||||
}
|
||||
return rr, nil
|
||||
}
|
||||
|
@ -213,7 +214,7 @@ func setDNAME(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
return nil, &ParseError{f, "bad CNAME Target", l}
|
||||
}
|
||||
if rr.Target[ld-1] != '.' {
|
||||
rr.Target += o
|
||||
rr.Target += "." + o
|
||||
}
|
||||
return rr, nil
|
||||
}
|
||||
|
@ -230,7 +231,7 @@ func setSOA(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
return nil, &ParseError{f, "bad SOA Ns", l}
|
||||
}
|
||||
if rr.Ns[ld-1] != '.' {
|
||||
rr.Ns += o
|
||||
rr.Ns += "." + o
|
||||
}
|
||||
|
||||
l = <-c
|
||||
|
@ -240,7 +241,7 @@ func setSOA(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
return nil, &ParseError{f, "bad SOA Mbox", l}
|
||||
}
|
||||
if rr.Mbox[ld-1] != '.' {
|
||||
rr.Mbox += o
|
||||
rr.Mbox += "." + o
|
||||
}
|
||||
<-c // _BLANK
|
||||
|
||||
|
@ -303,7 +304,7 @@ func setSRV(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
return nil, &ParseError{f, "bad SRV Target", l}
|
||||
}
|
||||
if rr.Target[ld-1] != '.' {
|
||||
rr.Target += o
|
||||
rr.Target += "." + o
|
||||
}
|
||||
return rr, nil
|
||||
}
|
||||
|
@ -345,7 +346,7 @@ func setNAPTR(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
return nil, &ParseError{f, "bad NAPTR Replacement", l}
|
||||
}
|
||||
if rr.Replacement[ld-1] != '.' {
|
||||
rr.Replacement += o
|
||||
rr.Replacement += "." + o
|
||||
}
|
||||
return rr, nil
|
||||
}
|
||||
|
@ -452,7 +453,7 @@ func setRRSIG(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
return nil, &ParseError{f, "bad RRSIG SignerName", l}
|
||||
}
|
||||
if rr.SignerName[ld-1] != '.' {
|
||||
rr.SignerName += o
|
||||
rr.SignerName += "." + o
|
||||
}
|
||||
// Get the remaining data until we see a NEWLINE
|
||||
l = <-c
|
||||
|
@ -483,7 +484,7 @@ func setNSEC(h RR_Header, c chan lex, o, f string) (RR, *ParseError) {
|
|||
return nil, &ParseError{f, "bad NSEC NextDomain", l}
|
||||
}
|
||||
if rr.NextDomain[ld-1] != '.' {
|
||||
rr.NextDomain += o
|
||||
rr.NextDomain += "." + o
|
||||
}
|
||||
|
||||
rr.TypeBitMap = make([]uint16, 0)
|
||||
|
@ -587,8 +588,8 @@ func setNSEC3PARAM(h RR_Header, c chan lex, f string) (RR, *ParseError) {
|
|||
<-c
|
||||
l = <-c
|
||||
rr.SaltLength = uint8(len(l.token))
|
||||
rr.Salt = l.token
|
||||
return rr, nil
|
||||
rr.Salt = l.token
|
||||
return rr, nil
|
||||
}
|
||||
|
||||
func setSSHFP(h RR_Header, c chan lex, f string) (RR, *ParseError) {
|
||||
|
|
Loading…
Reference in New Issue