Skip to content
Snippets Groups Projects
Commit 0470c568 authored by Daniel Salzman's avatar Daniel Salzman
Browse files

Added some tests + small fixes

refs #2041 @3h
parent 06c6b851
No related branches found
No related tags found
No related merge requests found
Showing
with 390 additions and 12 deletions
......@@ -20,7 +20,8 @@
* \brief RR type descriptors.
*/
static const rdata_descriptor_t rdata_descriptors[] = {
[0] = { { KNOT_RDATA_WF_END } },
[0] = { { KNOT_RDATA_WF_REMAINDER,
KNOT_RDATA_WF_END } },
[KNOT_RRTYPE_A] = { { 4, KNOT_RDATA_WF_END } },
[KNOT_RRTYPE_NS] = { { KNOT_RDATA_WF_COMPRESSED_DNAME,
KNOT_RDATA_WF_END } },
......
......@@ -140,12 +140,17 @@
(s->dname)[s->dname_tmp_length] = (s->dname)[s->dname_tmp_length];
s->dname_tmp_length++;
}
action _label_dec_error {
SCANNER_WARNING(ZSCANNER_EBAD_NUMBER);
fhold; fgoto err_line;
}
label_char =
( (alnum | [\-_/]) $_label_char # One common char.
| ('\\' . ^digit) @_label_char # One "\x" char.
| ('\\' %_label_dec_init # Initial "\" char.
. digit {3} $_label_dec %_label_dec_exit # "DDD" rest.
$!_label_dec_error
)
);
......@@ -517,14 +522,20 @@
action _text_dec_exit {
rdata_tail++;
}
action _text_dec_error {
SCANNER_WARNING(ZSCANNER_EBAD_NUMBER);
fhold; fgoto err_line;
}
text_char =
( (33..126 - [\\;\"]) $_text_char # One printable char.
| ('\\' . ^digit) @_text_char # One "\x" char.
| ('\\' %_text_dec_init # Initial "\" char.
( (33..126 - [\\;\"]) $_text_char # One printable char.
| ('\\' . ^digit) @_text_char # One "\x" char.
| ('\\' %_text_dec_init # Initial "\" char.
. digit {3} $_text_dec %_text_dec_exit # "DDD" rest.
$!_text_dec_error
)
) $!_text_char_error;
quoted_text_char =
( text_char
| ([ \t;] | [\n] when { s->multiline }) $_text_char
......@@ -532,7 +543,7 @@
# Text string machine instantiation (for smaller code).
text_ := (('\"' . quoted_text_char* . '\"') | text_char+)
$!_text_error %_ret . all_wchar;
$!_text_error %_ret . all_wchar;
text = ^all_wchar ${ fhold; fcall text_; };
# Text string with forward 1-byte length.
......
......@@ -16,7 +16,7 @@ ABCDEFGHIJKLMNOPQRSTUVWXYZ NS @ ; All upper-case letters
abcdefghijklmnopqrstuvwxyz NS @ ; All lower-case letters
\0320\ \\\"\.\@\*.tld. NS @ ; Label with special chars
b.a.9.8.7.6.5.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa. NS @ ; IPv6 reverse
123456789012345678901234567890123456789012345678901234567890123.tld. NS @ ; Label of maximal length
12345678901234567890123456789012345678901234567890123456789012\051.tld. NS @ ; Label of maximal length
123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901. NS @ ; Domain name of maximal length
; KO
......@@ -27,5 +27,5 @@ a*a NS @ ; * char can substitute whole label only
.. NS @ ; Missing label between dots
\1 NS @ ; Slash notation requires 3 digits
\12 NS @ ; Slash notation requires 3 digits
1234567890123456789012345678901234567890123456789012345678901234.tld. NS @ ; Label exceeded maximal length
12345678901234567890123456789012345678901234567890123456789012\0514.tld. NS @ ; Label exceeded maximal length
123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789012. NS @ ; Domain name exceeded maximal length
......@@ -104,9 +104,9 @@ ERROR=ZSCANNER_EBAD_DNAME_CHAR
------
ERROR=ZSCANNER_EBAD_DNAME_CHAR
------
ERROR=ZSCANNER_EBAD_DNAME_CHAR
ERROR=ZSCANNER_EBAD_NUMBER
------
ERROR=ZSCANNER_EBAD_DNAME_CHAR
ERROR=ZSCANNER_EBAD_NUMBER
------
ERROR=ZSCANNER_ELABEL_OVERFLOW
------
......
......@@ -22,6 +22,7 @@ $TTL 1
second"
third ; Second string
)
@ TXT "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMN1234\053" ; Text string of maximal length (255 chars)
@ txt "" ; Type in lower-case
; KO
......@@ -34,3 +35,4 @@ third ; Second string
@ TXT \256 ; 8bit overflow in decimal notation
@ TXT \# 2 "" ; Bad length
@ TXT """ ; '"' char without forward slash
@ TXT "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMN1234\0536" ; Maximal length overflow
......@@ -98,6 +98,12 @@ OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0010
RDATA=FF6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E3132333435
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0010
RDATA=00
------
ERROR=ZSCANNER_EBAD_RDATA
......@@ -110,7 +116,7 @@ ERROR=ZSCANNER_EBAD_NUMBER
------
ERROR=ZSCANNER_EBAD_NUMBER
------
ERROR=ZSCANNER_EBAD_TEXT_CHAR
ERROR=ZSCANNER_EBAD_NUMBER
------
ERROR=ZSCANNER_ENUMBER8_OVERFLOW
------
......@@ -118,4 +124,6 @@ ERROR=ZSCANNER_EBAD_HEX_CHAR
------
ERROR=ZSCANNER_EBAD_TEXT
------
ERROR=ZSCANNER_EITEM_OVERFLOW
------
......@@ -122,9 +122,9 @@ ERROR=ZSCANNER_EBAD_DNAME_CHAR
------
ERROR=ZSCANNER_EBAD_DNAME_CHAR
------
ERROR=ZSCANNER_EBAD_DNAME_CHAR
ERROR=ZSCANNER_EBAD_NUMBER
------
ERROR=ZSCANNER_EBAD_DNAME_CHAR
ERROR=ZSCANNER_EBAD_NUMBER
------
ERROR=ZSCANNER_ELABEL_OVERFLOW
------
......
$ORIGIN .
$TTL 1
; OK
@ HINFO "" "" ; Blank string
@ HINFO a b ; One char string
@ HINFO \ \ ; One space char
@ HINFO "\ " "\ " ; One space char in quotes
@ HINFO \021 \022 ; One unprintable char
@ HINFO "\\ \"" "\\ \"" ; Special chars
@ HINFO first \# ; Array with special string
@ HINFO \# 2 00 00 ; Hexadecimal rdata
@ TYPE13 \# 2 00 00 ; TYPE + Hexadecimal rdata
@ TYPE13 "" "" ; TYPE
@ HINFO "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMN1234\053" "" ; Text string of maximal length (255 chars)
@ hinfo "" "" ; Type in lower-case
; KO
@ HINFO
@ HINFO ; Empty rdata
@ HINFO \# 0 ; Hex empty rdata
@ HINFO \# ; Missing hex length
@ HINFO \# second ; Hex notation with second text string
@ HINFO \01 "" ; Missing digit in decimal notation
@ HINFO \256 "" ; 8bit overflow in decimal notation
@ HINFO \# 3 0000 ; Bad length
@ HINFO """ "" ; '"' char without forward slash
@ HINFO "" "" "" ; Unexpected item
@ HINFO "abcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz1234567890ABCDEFGHIJKLMN1234\0536" "" ; Maximal length overflow
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000D
RDATA=0000
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000D
RDATA=01610162
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000D
RDATA=01200120
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000D
RDATA=01200120
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000D
RDATA=01150116
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000D
RDATA=035C2022035C2022
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000D
RDATA=0566697273740123
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000D
RDATA=0000
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000D
RDATA=0000
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000D
RDATA=0000
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000D
RDATA=FF6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E6162636465666768696A6B6C6D6E6F707172737475767778797A313233343536373839304142434445464748494A4B4C4D4E313233343500
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000D
RDATA=0000
------
ERROR=ZSCANNER_EBAD_RDATA
------
ERROR=ZSCANNER_EBAD_RDATA
------
ERROR=ZSCANNER_EBAD_HEX_CHAR
------
ERROR=ZSCANNER_EBAD_NUMBER
------
ERROR=ZSCANNER_EBAD_NUMBER
------
ERROR=ZSCANNER_EBAD_NUMBER
------
ERROR=ZSCANNER_ENUMBER8_OVERFLOW
------
ERROR=ZSCANNER_EBAD_RDATA_LENGTH
------
ERROR=ZSCANNER_EBAD_TEXT
------
ERROR=ZSCANNER_EBAD_REST
------
ERROR=ZSCANNER_EITEM_OVERFLOW
------
$ORIGIN .
$TTL 1
; For more tests on dname see NS test (same processing)
; OK
@ MINFO . . ; The simplest dnames
@ MINFO @ @ ; Use origin
@ MINFO mail mail.tld. ; Relative and absolute dnames
@ MINFO \# 2 00 00 ; Hexadecimal rdata
@ TYPE14 \# 2 00 00 ; TYPE + Hexadecimal rdata
@ TYPE14 @ @ ; TYPE
@ minfo @ @ ; Type in lower-case
; KO
@ MINFO
@ MINFO ; Empty rdata
@ MINFO \# 0 ; Hex empty rdata
@ MINFO \# ; Missing hex length
@ MINFO \# 3 00 00 ; Bad length
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000E
RDATA=00 00
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000E
RDATA=00 00
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000E
RDATA=046D61696C00 046D61696C03746C6400
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000E
RDATA=00 00
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000E
RDATA=00 00
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000E
RDATA=00 00
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=000E
RDATA=00 00
------
ERROR=ZSCANNER_EBAD_RDATA
------
ERROR=ZSCANNER_EBAD_RDATA
------
ERROR=ZSCANNER_EBAD_HEX_CHAR
------
ERROR=ZSCANNER_EBAD_NUMBER
------
ERROR=ZSCANNER_EBAD_RDATA_LENGTH
------
$ORIGIN .
$TTL 1
; The RP is the same as the MINFO, so there are the differences and basics only.
; OK
@ RP mail mail.tld. ; Relative and absolute dnames
@ RP \# 2 00 00 ; Hexadecimal rdata
@ TYPE17 \# 2 00 00 ; TYPE + Hexadecimal rdata
@ TYPE17 @ @ ; TYPE
@ rp @ @ ; Type in lower-case
; KO
@ RP
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0011
RDATA=046D61696C00 046D61696C03746C6400
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0011
RDATA=00 00
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0011
RDATA=00 00
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0011
RDATA=00 00
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0011
RDATA=00 00
------
ERROR=ZSCANNER_EBAD_RDATA
------
$ORIGIN .
$TTL 1
; OK
@ SOA @ @ 0 0 0 0 0 ; The simplest variant
@ SOA tld. tld 0 0 0 0 0 ; Absolute and relative dnames.
@ SOA @ @ 4294967295 0 0 0 0 ; Maximal serial
@ SOA @ @ 0 4294967295 4294967295 4294967295 4294967295 ; Maximal times
@ SOA @ @ 0 1d 1h 1m 1s ; Time units
@ TYPE6 \# 22 00 00 0000000000000000000000000000000000000000 ; TYPE + Hexadecimal rdata
@ TYPE6 @ @ 0 0 0 0 0 ; TYPE
@ SOA ns.tld. first\.second.tld. ( ; Multiline record
2007120710
1w2d3h4m5s
2h
3m
4s
)
@ soa @ @ 0 0 0 0 0 ; Type in lower-case
; KO
@ SOA
@ SOA ; Empty rdata
@ SOA \# 0 ; Hex empty rdata
@ SOA \# ; Missing hex length
@ SOA @ @ 1h 0 0 0 0 ; Bad number
@ SOA @ @ 4294967296 0 0 0 0 ; Serial overflow
@ SOA @ @ 0 4294967296 0 0 0 ; Refresh overflow
@ SOA @ @ 0 0 4294967296 0 0 ; Retry overflow
@ SOA @ @ 0 0 0 4294967296 0 ; Expire overflow
@ SOA @ @ 0 0 0 0 4294967296 ; Minimum overflow
@ SOA @ @ 0 0 0 0 0 x ; Unexpected item
@ SOA \# 23 00 00 0000000000000000000000000000000000000000 ; Bad length
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0006
RDATA=00 00 0000000000000000000000000000000000000000
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0006
RDATA=03746C6400 03746C6400 0000000000000000000000000000000000000000
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0006
RDATA=00 00 FFFFFFFF00000000000000000000000000000000
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0006
RDATA=00 00 00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0006
RDATA=00 00 000000000001518000000E100000003C00000001
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0006
RDATA=00 00 0000000000000000000000000000000000000000
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0006
RDATA=00 00 0000000000000000000000000000000000000000
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0006
RDATA=026E7303746C6400 0C66697273742E7365636F6E6403746C6400 77A23B46000C08A500001C20000000B400000004
------
OWNER=00
CLASS=0001
RRTTL=00000001
RTYPE=0006
RDATA=00 00 0000000000000000000000000000000000000000
------
ERROR=ZSCANNER_EBAD_RDATA
------
ERROR=ZSCANNER_EBAD_RDATA
------
ERROR=ZSCANNER_EBAD_HEX_CHAR
------
ERROR=ZSCANNER_EBAD_NUMBER
------
ERROR=ZSCANNER_EBAD_NUMBER
------
ERROR=ZSCANNER_ENUMBER32_OVERFLOW
------
ERROR=ZSCANNER_ENUMBER32_OVERFLOW
------
ERROR=ZSCANNER_ENUMBER32_OVERFLOW
------
ERROR=ZSCANNER_ENUMBER32_OVERFLOW
------
ERROR=ZSCANNER_ENUMBER32_OVERFLOW
------
ERROR=ZSCANNER_EBAD_REST
------
ERROR=ZSCANNER_EBAD_RDATA_LENGTH
------
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment