From 16a77cb780142b8a10e4776a92584c3451d8ae56 Mon Sep 17 00:00:00 2001 From: VectorPeak Date: Tue, 21 Jul 2026 08:15:33 +0800 Subject: [PATCH] fix(serper): ignore malformed image URLs (#4319) Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> --- backend/packages/harness/deerflow/community/serper/tools.py | 5 ++++- backend/tests/test_serper_tools.py | 5 +++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/backend/packages/harness/deerflow/community/serper/tools.py b/backend/packages/harness/deerflow/community/serper/tools.py index 005a3090e..9f960981d 100644 --- a/backend/packages/harness/deerflow/community/serper/tools.py +++ b/backend/packages/harness/deerflow/community/serper/tools.py @@ -149,7 +149,10 @@ def _safe_public_url(value: object) -> str: if not isinstance(value, str): return "" url = value.strip() - parsed = urlparse(url) + try: + parsed = urlparse(url) + except ValueError: + return "" if parsed.scheme not in {"http", "https"} or not parsed.netloc or not parsed.hostname: return "" diff --git a/backend/tests/test_serper_tools.py b/backend/tests/test_serper_tools.py index 7df5311ec..f1bbddc9d 100644 --- a/backend/tests/test_serper_tools.py +++ b/backend/tests/test_serper_tools.py @@ -269,6 +269,11 @@ class TestSafePublicUrl: assert _safe_public_url("http://[::ffff:127.0.0.1]/x.jpg") == "" + def test_malformed_ipv6_url_does_not_raise(self): + from deerflow.community.serper.tools import _safe_public_url + + assert _safe_public_url("http://[::1/i.jpg") == "" + def test_non_http_scheme_is_filtered(self): from deerflow.community.serper.tools import _safe_public_url