From 1af60b2f4990bffdd1b050ffd11e978578d1e38f Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Wed, 2 Feb 2022 16:44:35 -0500 Subject: [PATCH] regexp/syntax: add and use ErrInvalidDepth The fix for #51112 introduced a depth check but used ErrInternalError to avoid introduce new API in a CL that would be backported to earlier releases. New API accepted in proposal #51684. This CL adds a distinct error for this case. For #51112. Fixes #51684. Change-Id: I068fc70aafe4218386a06103d9b7c847fb7ffa65 Reviewed-on: https://go-review.googlesource.com/c/go/+/384617 Trust: Russ Cox Run-TryBot: Russ Cox Reviewed-by: Ian Lance Taylor TryBot-Result: Gopher Robot --- api/next/regexpdepth.txt | 3 +++ src/regexp/syntax/parse.go | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 api/next/regexpdepth.txt diff --git a/api/next/regexpdepth.txt b/api/next/regexpdepth.txt new file mode 100644 index 0000000000..9810218560 --- /dev/null +++ b/api/next/regexpdepth.txt @@ -0,0 +1,3 @@ +pkg regexp/syntax, const ErrInvalidDepth = "invalid nesting depth" #0 +pkg regexp/syntax, const ErrInvalidDepth ErrorCode #0 + diff --git a/src/regexp/syntax/parse.go b/src/regexp/syntax/parse.go index fa45def9b7..ebf8e11915 100644 --- a/src/regexp/syntax/parse.go +++ b/src/regexp/syntax/parse.go @@ -43,6 +43,7 @@ const ( ErrMissingRepeatArgument ErrorCode = "missing argument to repetition operator" ErrTrailingBackslash ErrorCode = "trailing backslash at end of expression" ErrUnexpectedParen ErrorCode = "unexpected )" + ErrInvalidDepth ErrorCode = "invalid nesting depth" ) func (e ErrorCode) String() string { @@ -133,7 +134,7 @@ func (p *parser) checkHeight(re *Regexp) { } } if p.calcHeight(re, true) > maxHeight { - panic(ErrInternalError) + panic(ErrInvalidDepth) } } @@ -756,8 +757,8 @@ func parse(s string, flags Flags) (_ *Regexp, err error) { panic(r) case nil: // ok - case ErrInternalError: - err = &Error{Code: ErrInternalError, Expr: s} + case ErrInvalidDepth: + err = &Error{Code: ErrInvalidDepth, Expr: s} } }() -- 2.50.0