From 4a28886502701fee7dfa949ca72f8b36737bb1c2 Mon Sep 17 00:00:00 2001 From: "tao.chen" <93983997+taochen-ct@users.noreply.github.com> Date: Mon, 13 Jul 2026 19:56:24 +0800 Subject: [PATCH] =?UTF-8?q?tools:=20=E6=B8=85=E7=90=86=20fetch=5Furl.go=20?= =?UTF-8?q?S1017=20lint=20=E8=AD=A6=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit matchAllowedHost 里两处 if strings.HasPrefix(...) pattern = pattern[N:] 替成无条件 strings.TrimPrefix, 行为完全等价 (前缀不匹配时 TrimPrefix 是 no-op). 触发 S1017 (Should replace this if statement with an unconditional strings.TrimPrefix). 跟 475e353 在 httpclient/ssrf.go 上做的清理一模一样, 当时 只清了一处, fetch_url.go 里 copy 了同款 pattern 漏了. 净 -4 行, 函数语义不变, 现有测试 (fetch_url_test.go 覆盖的精确 / 后缀 / wildcard 三种 host 匹配路径) 不变. Co-Authored-By: Claude --- internal/mcp/tools/fetch_url.go | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/internal/mcp/tools/fetch_url.go b/internal/mcp/tools/fetch_url.go index 23e6198..3f514e6 100644 --- a/internal/mcp/tools/fetch_url.go +++ b/internal/mcp/tools/fetch_url.go @@ -209,12 +209,8 @@ func hostAllowed(host string, allowed []string) bool { if pattern == host { return true } - if strings.HasPrefix(pattern, "*.") { - pattern = pattern[2:] - } - if strings.HasPrefix(pattern, ".") { - pattern = pattern[1:] - } + pattern = strings.TrimPrefix(pattern, "*.") + pattern = strings.TrimPrefix(pattern, ".") if host == pattern || strings.HasSuffix(host, "."+pattern) { return true }