1*6777b538SAndroid Build Coastguard Worker# Copyright 2024 The Chromium Project. All rights reserved. 2*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker# The set of path prefixes that should be checked for unsafe pointer usage (see 6*6777b538SAndroid Build Coastguard Worker# -Wunsafe-buffer-usage in Clang). 7*6777b538SAndroid Build Coastguard Worker# 8*6777b538SAndroid Build Coastguard Worker# *** 9*6777b538SAndroid Build Coastguard Worker# Paths should be written as relative to the root of the source tree with 10*6777b538SAndroid Build Coastguard Worker# unix-style path separators. Directory prefixes should end with `/`, such 11*6777b538SAndroid Build Coastguard Worker# as `base/`. 12*6777b538SAndroid Build Coastguard Worker# *** 13*6777b538SAndroid Build Coastguard Worker# 14*6777b538SAndroid Build Coastguard Worker# Lines that begin with `-` name path prefixes that will *not* be checked for 15*6777b538SAndroid Build Coastguard Worker# unsafe-buffer-usage. They are known to do unsafe things and should be 16*6777b538SAndroid Build Coastguard Worker# changed to use constructs like base::span or containers like base::HeapArray 17*6777b538SAndroid Build Coastguard Worker# and std::vector instead. See https://crbug.com/40285824 18*6777b538SAndroid Build Coastguard Worker# 19*6777b538SAndroid Build Coastguard Worker# Lines that begin with `+` name path prefixes that have no unsafe-buffer-usage 20*6777b538SAndroid Build Coastguard Worker# (or all such usage is annotated), and are protected against new unsafe pointer 21*6777b538SAndroid Build Coastguard Worker# behaviour by the compiler. 22*6777b538SAndroid Build Coastguard Worker# 23*6777b538SAndroid Build Coastguard Worker# By default, all files are checked for unsafe-buffer-usage unless they are 24*6777b538SAndroid Build Coastguard Worker# match a `-` path prefix line here. If a file matches both a `-` and `+` line, 25*6777b538SAndroid Build Coastguard Worker# the `+` line takes precedence and the file will be checked. 26*6777b538SAndroid Build Coastguard Worker# 27*6777b538SAndroid Build Coastguard Worker# To opt individual files out of checks, place `#pragma allow_unsafe_buffers` 28*6777b538SAndroid Build Coastguard Worker# anywhere in the (source or header) file. These pragmas represent the 29*6777b538SAndroid Build Coastguard Worker# technical debt and security risk present in the file through unsafe 30*6777b538SAndroid Build Coastguard Worker# pointer usage. 31*6777b538SAndroid Build Coastguard Worker# 32*6777b538SAndroid Build Coastguard Worker# *** 33*6777b538SAndroid Build Coastguard Worker# Recommended process for removing a `-dir/` line from this file: 34*6777b538SAndroid Build Coastguard Worker# 35*6777b538SAndroid Build Coastguard Worker# 1. Remove the `-dir/` line from this paths file. 36*6777b538SAndroid Build Coastguard Worker# a. Possibly add some subdirectories if needed to reduce scope, 37*6777b538SAndroid Build Coastguard Worker# like `-dir/sub_dir/`. 38*6777b538SAndroid Build Coastguard Worker# 2. Add `#pragma allow_unsafe_buffers` to every file in the directory that now 39*6777b538SAndroid Build Coastguard Worker# has a compilation error, with a TODO to the tracking bug for the 40*6777b538SAndroid Build Coastguard Worker# directory. 41*6777b538SAndroid Build Coastguard Worker# 3. Work through the files in the directory, converting pointers to spans, or 42*6777b538SAndroid Build Coastguard Worker# to owning containers like HeapArray and vector. Remove the pragmas from 43*6777b538SAndroid Build Coastguard Worker# the files when there is no unsafe pointer usage left in each one. 44*6777b538SAndroid Build Coastguard Worker# 45*6777b538SAndroid Build Coastguard Worker# See `docs/unsafe_buffers.md`. 46*6777b538SAndroid Build Coastguard Worker 47*6777b538SAndroid Build Coastguard Worker-android_webview/ 48*6777b538SAndroid Build Coastguard Worker-apps/ 49*6777b538SAndroid Build Coastguard Worker-ash/ 50*6777b538SAndroid Build Coastguard Worker 51*6777b538SAndroid Build Coastguard Worker-base/ 52*6777b538SAndroid Build Coastguard Worker+base/containers/buffer_iterator_nocompile.nc 53*6777b538SAndroid Build Coastguard Worker+base/containers/span.h 54*6777b538SAndroid Build Coastguard Worker+base/strings/cstring_view 55*6777b538SAndroid Build Coastguard Worker+base/unsafe_buffers_unittest.cc 56*6777b538SAndroid Build Coastguard Worker+base/unsafe_buffers_nocompile.nc 57*6777b538SAndroid Build Coastguard Worker 58*6777b538SAndroid Build Coastguard Worker-build/ 59*6777b538SAndroid Build Coastguard Worker-build_overrides/ 60*6777b538SAndroid Build Coastguard Worker-buildtools/ 61*6777b538SAndroid Build Coastguard Worker-cc/ 62*6777b538SAndroid Build Coastguard Worker-chrome/ 63*6777b538SAndroid Build Coastguard Worker-chromecast/ 64*6777b538SAndroid Build Coastguard Worker-chromeos/ 65*6777b538SAndroid Build Coastguard Worker-clank/ 66*6777b538SAndroid Build Coastguard Worker-codelabs/ 67*6777b538SAndroid Build Coastguard Worker-components/ 68*6777b538SAndroid Build Coastguard Worker-content/ 69*6777b538SAndroid Build Coastguard Worker-courgette/ 70*6777b538SAndroid Build Coastguard Worker-crypto/ 71*6777b538SAndroid Build Coastguard Worker-data/ 72*6777b538SAndroid Build Coastguard Worker-dbus/ 73*6777b538SAndroid Build Coastguard Worker-device/ 74*6777b538SAndroid Build Coastguard Worker-docs/ 75*6777b538SAndroid Build Coastguard Worker-extensions/ 76*6777b538SAndroid Build Coastguard Worker-fuchsia_web/ 77*6777b538SAndroid Build Coastguard Worker-gin/ 78*6777b538SAndroid Build Coastguard Worker-google_apis/ 79*6777b538SAndroid Build Coastguard Worker-google_update/ 80*6777b538SAndroid Build Coastguard Worker-gpu/ 81*6777b538SAndroid Build Coastguard Worker-headless/ 82*6777b538SAndroid Build Coastguard Worker-infra/ 83*6777b538SAndroid Build Coastguard Worker-internal/ 84*6777b538SAndroid Build Coastguard Worker-ios/ 85*6777b538SAndroid Build Coastguard Worker-ios_internal/ 86*6777b538SAndroid Build Coastguard Worker-ipc/ 87*6777b538SAndroid Build Coastguard Worker-media/ 88*6777b538SAndroid Build Coastguard Worker-mojo/ 89*6777b538SAndroid Build Coastguard Worker-native_client/ 90*6777b538SAndroid Build Coastguard Worker-native_client_sdk/ 91*6777b538SAndroid Build Coastguard Worker-net/ 92*6777b538SAndroid Build Coastguard Worker-pdf/ 93*6777b538SAndroid Build Coastguard Worker-ppapi/ 94*6777b538SAndroid Build Coastguard Worker-printing/ 95*6777b538SAndroid Build Coastguard Worker-remoting/ 96*6777b538SAndroid Build Coastguard Worker-rlz/ 97*6777b538SAndroid Build Coastguard Worker-sandbox/ 98*6777b538SAndroid Build Coastguard Worker-services/ 99*6777b538SAndroid Build Coastguard Worker-signing_keys/ 100*6777b538SAndroid Build Coastguard Worker-skia/ 101*6777b538SAndroid Build Coastguard Worker-sql/ 102*6777b538SAndroid Build Coastguard Worker-storage/ 103*6777b538SAndroid Build Coastguard Worker-testing/ 104*6777b538SAndroid Build Coastguard Worker-third_party/ 105*6777b538SAndroid Build Coastguard Worker-tools/ 106*6777b538SAndroid Build Coastguard Worker-ui/ 107*6777b538SAndroid Build Coastguard Worker-url/ 108*6777b538SAndroid Build Coastguard Worker-v8/ 109*6777b538SAndroid Build Coastguard Worker-webkit/ 110