Medium chrome Logic Error 🔧 Commit mapped

Overview

Medium
Severity
CVSS
No
Exploited ITW
Fixed
Fix Status
ImpactInappropriate implementation in SiteSettings
DescriptionInappropriate implementation in SiteSettings
ComponentSiteSettings
Bug ClassLogic Error
Tracker513183855
Fix commite30c633e08c5 (chromium/src) +6/-3
CISA KEVNot listed
CreditedGoogle
Disclosed2026-06-30

Files Changed

  • components/browser_ui/site_settings/android/website_preference_bridge.cc
From e30c633e08c57ac7f44311287bf069123ac9e5b7 Mon Sep 17 00:00:00 2001
From: Christian Dullweber <[email protected]>
Date: Thu, 21 May 2026 03:13:06 -0700
Subject: [PATCH] SiteSettings: Include separators when checking protocol prefixes

Ensure that we correctly check schemes in site settings.

Bug: 513183855
Change-Id: I661d950514091218deab3d7cbefef5a585d96da8
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7864642
Reviewed-by: Nicola Tommasi <[email protected]>
Commit-Queue: Christian Dullweber <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1634155}
---

diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc
index 3999c5ed..915963b 100644
--- a/components/browser_ui/site_settings/android/website_preference_bridge.cc
+++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc
@@ -121,6 +121,9 @@
 const char kHttpPortSuffix[] = ":80";
 const char kHttpsPortSuffix[] = ":443";
 const char kExtensionSlashSuffix[] = "/";
+constexpr char kHttpsPrefix[] = "https://";
+constexpr char kHttpPrefix[] = "http://";
+constexpr char kExtensionPrefix[] = "chrome-extension://";
 
 BrowserContext* unwrap(const JavaRef<jobject>& jbrowser_context_handle) {
   return content::BrowserContextFromJavaHandle(jbrowser_context_handle);
@@ -169,19 +172,19 @@
   // HostContentSettingsMap: once to get all the 'interesting' hosts, and once
   // (on SingleWebsitePreferences) to find permission patterns which match
   // each of these hosts.
-  if (base::StartsWith(origin, url::kHttpsScheme,
+  if (base::StartsWith(origin, kHttpsPrefix,
                        base::CompareCase::INSENSITIVE_ASCII) &&
       base::EndsWith(origin, kHttpsPortSuffix,
                      base::CompareCase::INSENSITIVE_ASCII)) {
     return ConvertUTF8ToJavaString(
         env, origin.substr(0, origin.size() - strlen(kHttpsPortSuffix)));
-  } else if (base::StartsWith(origin, url::kHttpScheme,
+  } else if (base::StartsWith(origin, kHttpPrefix,
                               base::CompareCase::INSENSITIVE_ASCII) &&
              base::EndsWith(origin, kHttpPortSuffix,
                             base::CompareCase::INSENSITIVE_ASCII)) {
     return ConvertUTF8ToJavaString(
         env, origin.substr(0, origin.size() - strlen(kHttpPortSuffix)));
-  } else if (base::StartsWith(origin, content_settings::kExtensionScheme,
+  } else if (base::StartsWith(origin, kExtensionPrefix,
                               base::CompareCase::INSENSITIVE_ASCII) &&
              base::EndsWith(origin, kExtensionSlashSuffix,
                             base::CompareCase::INSENSITIVE_ASCII)) {
Loading diff…

Original Bug Report

The reporter's bug is still restricted on the tracker. Chrome de-restricts security bugs ~30–90 days after the fix ships; a later run will backfill it here.