From 10ac52eff317df393d5bddcc23b476204792791b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89mile=20R=C3=A9?= Date: Tue, 12 May 2026 10:12:02 +0400 Subject: [PATCH] Fix PR review feedback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Preserve SSRF protection by wrapping the existing transport instead of replacing it with a bare http.Transport - Strip DSN from url.Parse error to avoid leaking credentials - Gate CommonThirdPartyCombobox on search length to prevent showing stale results when input is shortened - Handle multi-value and uppercase sizes attributes in parseSizeAttr for correct icon-size ranking - Match rel tokens containing "icon" (e.g. "shortcut icon") instead of requiring an exact match - Limit HTML response body to 10 MiB before parsing - Reject sslmode=prefer explicitly in both import tools Signed-off-by: Émile Ré --- .../vendors/dialogs/CreateVendorDialog.tsx | 2 +- cmd/common-third-parties-import/main.go | 8 +++-- cmd/geoloc-import/main.go | 6 ++-- pkg/webinspect/logo.go | 32 ++++++++++++------- pkg/webinspect/parse.go | 3 +- 5 files changed, 32 insertions(+), 19 deletions(-) diff --git a/apps/console/src/pages/organizations/vendors/dialogs/CreateVendorDialog.tsx b/apps/console/src/pages/organizations/vendors/dialogs/CreateVendorDialog.tsx index 72195be54..01c5ba78d 100644 --- a/apps/console/src/pages/organizations/vendors/dialogs/CreateVendorDialog.tsx +++ b/apps/console/src/pages/organizations/vendors/dialogs/CreateVendorDialog.tsx @@ -98,7 +98,7 @@ export function CreateVendorDialog({ - {queryRef && ( + {searchQuery.trim().length >= 2 && queryRef && ( largestSize { largestIcon = href @@ -87,21 +87,29 @@ func FindLogoURL(info *PageInfo) (string, error) { } func parseSizeAttr(sizes string) int { - if sizes == "" || strings.ToLower(sizes) == "any" { + if sizes == "" || strings.EqualFold(sizes, "any") { return 0 } - parts := strings.SplitN(sizes, "x", 2) - if len(parts) == 0 { - return 0 + best := 0 + for _, token := range strings.Fields(sizes) { + token = strings.ToLower(token) + parts := strings.SplitN(token, "x", 2) + if len(parts) != 2 { + continue + } + + w, err := strconv.Atoi(parts[0]) + if err != nil { + continue + } + + if w > best { + best = w + } } - w, err := strconv.Atoi(parts[0]) - if err != nil { - return 0 - } - - return w + return best } func ExtensionForMIME(contentType string) string { diff --git a/pkg/webinspect/parse.go b/pkg/webinspect/parse.go index 6fb46dbe9..8f66fe2ca 100644 --- a/pkg/webinspect/parse.go +++ b/pkg/webinspect/parse.go @@ -50,7 +50,8 @@ func Parse(ctx context.Context, client *http.Client, websiteURL string) (*PageIn return nil, fmt.Errorf("cannot fetch page: status %d", resp.StatusCode) } - return ParseHTML(parsed, resp.Body) + const maxHTMLSize = 10 << 20 // 10 MiB + return ParseHTML(parsed, io.LimitReader(resp.Body, maxHTMLSize)) } func ParseHTML(baseURL *url.URL, r io.Reader) (*PageInfo, error) {