Repository: electron/electron (language: cpp)

Issue:
[Upgrade Follow-Up]: Re-enable `clang_unsafe_buffers_paths`
In [this `main` upgrade roll](https://github.com/electron/electron/pull/45334), Chromium's unsafe buffers clang plugin started emitting errors on Chromium code. I couldn't narrow it down to a change, but it should be somewhere in [this Chromium commit range](https://chromium.googlesource.com/chromium/src/+log/134.0.6986.0..134.0.6988.0?n=10000&pretty=fuller) ([change 6198870](https://chromium.googlesource.com/chromium/src/+/916a63df87f5c22d6e8d4cda251aee2e220c1fcf) looks suspicious). In [this commit](https://github.com/electron/electron/pull/45334/commits/1e9acec7a0fc9bcece47075c31e7e5d8daaf979f) I disabled the plugin to prevent the errors.

We should work on re-enabling this plugin as soon as possible, as these errors are critical for diagnosing memory unsafety bugs.


Discussion / hints:

Fix patch:
diff --git a/build/args/all.gn b/build/args/all.gn
index 462b9d03d8c60..54ddf6aaf7558 100644
--- a/build/args/all.gn
+++ b/build/args/all.gn
@@ -74,10 +74,4 @@ enterprise_cloud_content_analysis = false
 # https://issues.chromium.org/issues/40943039
 content_enable_legacy_ipc = true
 
-# Electron has its own unsafe-buffers enforcement directories.
-# TODO: clang_unsafe_buffers_paths = "//electron/electron_unsafe_buffers_paths.txt"
-#
-# Disables unsafe-buffers-usage plugin due to incompatibilities with our reclient implementation
-# Ref: https://chromium-review.googlesource.com/c/chromium/src/+/5426599
-# Ref: https://github.com/electron/electron/commit/8e20f16ea35eeaeb149ae63bad3703d782665f6a
-clang_unsafe_buffers_paths = ""
+clang_unsafe_buffers_paths = "//electron/electron_unsafe_buffers_paths.txt"
diff --git a/patches/chromium/.patches b/patches/chromium/.patches
index 0abbd2861984e..6464dce67d2ee 100644
--- a/patches/chromium/.patches
+++ b/patches/chromium/.patches
@@ -140,3 +140,4 @@ ignore_parse_errors_for_pkey_appusermodel_toastactivatorclsid.patch
 feat_add_signals_when_embedder_cleanup_callbacks_run_for.patch
 feat_separate_content_settings_callback_for_sync_and_async_clipboard.patch
 fix_win32_synchronous_spellcheck.patch
+chore_remove_conflicting_allow_unsafe_libc_calls.patch
diff --git a/patches/chromium/chore_remove_conflicting_allow_unsafe_libc_calls.patch b/patches/chromium/chore_remove_conflicting_allow_unsafe_libc_calls.patch
new file mode 100644
index 0000000000000..a10e4e2a2f97f
--- /dev/null
+++ b/patches/chromium/chore_remove_conflicting_allow_unsafe_libc_calls.patch
@@ -0,0 +1,49 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Charles Kerr <charles@charleskerr.com>
+Date: Sat, 22 Feb 2025 13:15:39 -0600
+Subject: chore: remove conflicting allow_unsafe_libc_calls
+
+We want builds to fail if a buffer warning comes from Electron code but
+not from code that we don't maintain (e.g. upstream Chromium code), so
+//electron/electron_unsafe_buffer_paths.txt turns off Chromium warnings.
+
+There are some upstream files that generate warnings *and* also have
+pragmas that override //electron/electron_unsafe_buffer_paths.txt,
+forcing them to be tested. This breaks our build.
+
+Files can be removed from this patch when upstream either removes the
+pragma or fixes the other warnings. This patch can be removed when no
+files are left.
+
+diff --git a/net/cookies/parsed_cookie.cc b/net/cookies/parsed_cookie.cc
+index 7d5d0106a3675b3fa21b0e00a755f5c0ed11c87b..d26c645d70b54b31815c8140954ee6d0a34fa8af 100644
+--- a/net/cookies/parsed_cookie.cc
++++ b/net/cookies/parsed_cookie.cc
+@@ -2,11 +2,6 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+ 
+-#ifdef UNSAFE_BUFFERS_BUILD
+-// TODO(crbug.com/390223051): Remove C-library calls to fix the errors.
+-#pragma allow_unsafe_libc_calls
+-#endif
+-
+ // Portions of this code based on Mozilla:
+ //   (netwerk/cookie/src/nsCookieService.cpp)
+ /* ***** BEGIN LICENSE BLOCK *****
+diff --git a/net/http/http_response_headers.cc b/net/http/http_response_headers.cc
+index 34ef2be4415825254c41d5970be33b1195a9a381..4a3462664c22f6d367e02ac03551c22c0db52a4d 100644
+--- a/net/http/http_response_headers.cc
++++ b/net/http/http_response_headers.cc
+@@ -2,11 +2,6 @@
+ // Use of this source code is governed by a BSD-style license that can be
+ // found in the LICENSE file.
+ 
+-#ifdef UNSAFE_BUFFERS_BUILD
+-// TODO(crbug.com/390223051): Remove C-library calls to fix the errors.
+-#pragma allow_unsafe_libc_calls
+-#endif
+-
+ // The rules for header parsing were borrowed from Firefox:
+ // http://lxr.mozilla.org/seamonkey/source/netwerk/protocol/http/src/nsHttpResponseHead.cpp
+ // The rules for parsing content-types were also borrowed from Firefox:


Test patch: