From babbdab23ae95cdfbd19b69eb04788c504254bfc Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Tue, 23 May 2017 11:21:56 +0100 Subject: [PATCH] parsing: error on unbalanced braces (#489) When done parsing, check if we have balanced braces, if not error out. Fixes #488 --- parse_test.go | 11 +++++++++++ scan.go | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/parse_test.go b/parse_test.go index 2622318d..fc5bdaf5 100644 --- a/parse_test.go +++ b/parse_test.go @@ -1527,3 +1527,14 @@ func TestParseAVC(t *testing.T) { } } } + +func TestUnbalancedParens(t *testing.T) { + sig := `example.com. 3600 IN RRSIG MX 15 2 3600 ( + 1440021600 1438207200 3613 example.com. ( + oL9krJun7xfBOIWcGHi7mag5/hdZrKWw15jPGrHpjQeRAvTdszaPD+QLs3f + x8A4M3e23mRZ9VrbpMngwcrqNAg== )` + _, err := NewRR(sig) + if err == nil { + t.Fatalf("Failed to detect extra opening brace") + } +} diff --git a/scan.go b/scan.go index de0db32f..8d4773c3 100644 --- a/scan.go +++ b/scan.go @@ -811,6 +811,12 @@ func zlexer(s *scan, c chan lex) { debug.Printf("[%+v]", l.token) c <- l } + if brace != 0 { + l.token = "unbalanced brace" + l.tokenUpper = l.token + l.err = true + c <- l + } } // Extract the class number from CLASSxx