Low chrome Logic Error 🔧 Commit mapped

Overview

Low
Severity
CVSS
No
Exploited ITW
Fixed
Fix Status
ImpactInappropriate implementation in CustomTabs
DescriptionInappropriate implementation in CustomTabs
ComponentCustomTabs
Bug ClassLogic Error
Tracker497959724
Fix commitb6d22ab493d0 (chromium/src) +3/-6
CISA KEVNot listed
CreditedGoogle
Disclosed2026-06-30

Changed Functions

FunctionChangeNotes
if
chrome/android/java/src/org/chromium/chrome/browser/browserservices/PostMessageHandler.java
modified

Files Changed

  • chrome/android/java/src/org/chromium/chrome/browser/browserservices/PostMessageHandler.java
From b6d22ab493d099081b5c48bdedd9331b264ea815 Mon Sep 17 00:00:00 2001
From: Sinan Sahin <sinansahin@google.com>
Date: Mon, 18 May 2026 22:46:46 -0700
Subject: [PATCH] [CCT] Fix PostMessage channel init and navigation tracking

This CL ensures WebContents is always set and WebContentsObserver is
always created during reset. Also, it updates the WebContentsObserver to
tear down the channel and resets the verified origin on main-frame
navigations.

Bug: 497959724
Change-Id: I23ec764237e6e81b2589aa34302a8e53d12f0fbc
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7858190
Commit-Queue: Sinan Sahin <sinansahin@google.com>
Reviewed-by: Peter Conn <peconn@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1632631}
---

diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/PostMessageHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/PostMessageHandler.java
index c9100059..be5a29a 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/browserservices/PostMessageHandler.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browserservices/PostMessageHandler.java
@@ -109,17 +109,14 @@
         // Can't reset with the same web contents twice.
         if (webContents.equals(mWebContents)) return;
         mWebContents = webContents;
-        if (mPostMessageSourceUri == null) return;
         new WebContentsObserver(webContents) {
             private boolean mNavigatedOnce;
 
             @Override
             public void didFinishNavigationInPrimaryMainFrame(NavigationHandle navigation) {
-                if (mNavigatedOnce
-                        && navigation.hasCommitted()
-                        && !navigation.isSameDocument()
-                        && mChannel != null) {
+                if (mNavigatedOnce && navigation.hasCommitted() && !navigation.isSameDocument()) {
                     observe(null);
+                    mPostMessageSourceUri = null;
                     disconnectChannel();
                     return;
                 }
@@ -137,7 +134,7 @@
                     Page page,
                     GlobalRenderFrameHostId rfhId,
                     @LifecycleState int rfhLifecycleState) {
-                if (mChannel != null) {
+                if (mChannel != null || mPostMessageSourceUri == null) {
                     return;
                 }
                 initializeWithWebContents(webContents);
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.