From b68b05c64c632d365e8ab4573e817b530e28ef95 Mon Sep 17 00:00:00 2001 From: Ankit Pandey Date: Sun, 26 May 2024 13:57:14 -0700 Subject: [PATCH] reader/processor: error out for improper rewrite regexp It's possible to specify a rewrite regex that validates but doesn't compile such as: rewrite("(((unmatched-capture-group"|"rewrite)))") In case we encounter one, exit early instead of letting the server panic. --- internal/reader/processor/processor.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/internal/reader/processor/processor.go b/internal/reader/processor/processor.go index c5d368e4..deaf25f3 100644 --- a/internal/reader/processor/processor.go +++ b/internal/reader/processor/processor.go @@ -232,7 +232,14 @@ func getUrlFromEntry(feed *model.Feed, entry *model.Entry) string { parts := customReplaceRuleRegex.FindStringSubmatch(feed.UrlRewriteRules) if len(parts) >= 3 { - re := regexp.MustCompile(parts[1]) + re, err := regexp.Compile(parts[1]) + if err != nil { + slog.Error("Failed on regexp compilation", + slog.String("url_rewrite_rules", feed.UrlRewriteRules), + slog.Any("error", err), + ) + return url + } url = re.ReplaceAllString(entry.URL, parts[2]) slog.Debug("Rewriting entry URL", slog.String("original_entry_url", entry.URL),