Преглед изворни кода

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.
Ankit Pandey пре 1 година
родитељ
комит
b68b05c64c
1 измењених фајлова са 8 додато и 1 уклоњено
  1. 8 1
      internal/reader/processor/processor.go

+ 8 - 1
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),