From 042a04ab6eb4d5735582b331d8f6a6d6a0d99c95 Mon Sep 17 00:00:00 2001 From: YoursFunny Date: Sat, 8 Aug 2026 20:05:09 +0800 Subject: [PATCH] site: anchor pixiv and bsky URL patterns Both matched URL substrings anywhere in text, so a link like https://evil.com/?u=pixiv.net/artworks/1 triggered a real fetch and cache-key pollution. Prefix ^(?:https?://)? like the twitter pattern. --- crates/x-media/src/site/bsky/interface.rs | 5 +++-- crates/x-media/src/site/pixiv/interface.rs | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/crates/x-media/src/site/bsky/interface.rs b/crates/x-media/src/site/bsky/interface.rs index 791f2f2..c8ed335 100644 --- a/crates/x-media/src/site/bsky/interface.rs +++ b/crates/x-media/src/site/bsky/interface.rs @@ -5,8 +5,9 @@ use html_escape::encode_text; use regex::Regex; use std::sync::LazyLock; -pub static PATTERN: LazyLock = - LazyLock::new(|| Regex::new(r"bsky\.app/profile/([\w.\-:]+)/post/([\w.\-~]+)").unwrap()); +pub static PATTERN: LazyLock = LazyLock::new(|| { + Regex::new(r"^(?:https?://)?bsky\.app/profile/([\w.\-:]+)/post/([\w.\-~]+)").unwrap() +}); pub fn enabled() -> bool { true diff --git a/crates/x-media/src/site/pixiv/interface.rs b/crates/x-media/src/site/pixiv/interface.rs index 92c1d01..506bced 100644 --- a/crates/x-media/src/site/pixiv/interface.rs +++ b/crates/x-media/src/site/pixiv/interface.rs @@ -6,7 +6,7 @@ use regex::Regex; use std::sync::LazyLock; pub static PATTERN: LazyLock = LazyLock::new(|| { - Regex::new(r"(?:www\.)?pixiv\.net/(?:en/)?(?:(?:i|artworks)/|member_illust\.php\?(?:mode=[a-z_]*&)?illust_id=)(\d+)").unwrap() + Regex::new(r"^(?:https?://)?(?:www\.)?pixiv\.net/(?:en/)?(?:(?:i|artworks)/|member_illust\.php\?(?:mode=[a-z_]*&)?illust_id=)(\d+)").unwrap() }); pub fn enabled() -> bool {