commit | e041be8dc8b5b9e3012e752c2636fcf1cd8b0b1d | [log] [tgz] |
---|---|---|
author | Richard Knoll <knollr@chromium.org> | Fri Apr 23 08:56:16 2021 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Fri Apr 23 08:56:16 2021 |
tree | 8e1f4a269be1d37dabc719c4df6a0bcf07fd1188 | |
parent | cc22cf0882acd6bbfbdb6fddb4462c85c085d6bd [diff] |
Prevent USSD codes via Click to Call Click to Call allows users to send a phone number from their Chrome desktop instance to their Android phone. This number either comes from a user's selection and sent via the context menu, or by clicking on a link with a "tel:" href. Sending from the context menu is gated by a regular expression and will not allow any special characters like '#' or '*' to be contained in the phone number. Sending link hrefs does not go through that check as we assume the link is a valid phone number. We do call GURL::GetContent() to get the number which should discard anything after a (and including the) '#' character. However, we also URL-decoded the resulting string before then sending it over to Android, where we URL-decoded it again when constructing the Dialer intent. This allows sending double-URL-encoded USSD tel links which will be sent straight to the Dialer on certain Android versions and device states. The fix here is on both desktop and Android side: Desktop: - URL-decode the number and ignore if it contains '#', '*' or '%'. - Send the raw number (URL-encoded) to Android Android: - Verify that URL-decoding the received raw number is valid as above - Show the decoded number in the notification - Parse the raw number in Java into a Uri object for the Dialer Together this makes sure that we only URL-decode tel: links once and verify it on both sender and receiver side before passing it on to the Android Dialer. Bug: 1180510 Test: updated unit_tests and browser_tests to check for conversion Change-Id: Idf380b629cdf00155ecab054398af69f37ec2ef9 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2825704 Reviewed-by: Robert Kaplow <rkaplow@chromium.org> Reviewed-by: David Jacobo <djacobo@chromium.org> Reviewed-by: Gayane Petrosyan <gayane@chromium.org> Reviewed-by: Istiaque Ahmed <lazyboy@chromium.org> Reviewed-by: Peter Beverloo <peter@chromium.org> Commit-Queue: Richard Knoll <knollr@chromium.org> Cr-Commit-Position: refs/heads/master@{#875572}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.