From 9b4993ca7d1279dec5c5d41ba327cb11a77bdc00 Mon Sep 17 00:00:00 2001 From: Derek Mauro Date: Tue, 21 May 2024 12:07:45 -0700 Subject: Change GoogleTest flag removal to not read beyond the end of the array to the NULL terminator. #4532 says ASAN complains about this on some platforms, although it is not clear if ASAN or the platform implementation is incorrect about accessing the terminating NULL. Fixes #4532 PiperOrigin-RevId: 635886009 Change-Id: Ibb4237055488c895b1dd09145ab979347bb9a390 --- googletest/src/gtest.cc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'googletest') diff --git a/googletest/src/gtest.cc b/googletest/src/gtest.cc index d64c18d..9a17180 100644 --- a/googletest/src/gtest.cc +++ b/googletest/src/gtest.cc @@ -6700,17 +6700,17 @@ void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) { } if (remove_flag) { - // Shift the remainder of the argv list left by one. Note - // that argv has (*argc + 1) elements, the last one always being - // NULL. The following loop moves the trailing NULL element as - // well. - for (int j = i; j != *argc; j++) { - argv[j] = argv[j + 1]; + // Shift the remainder of the argv list left by one. + for (int j = i + 1; j < *argc; ++j) { + argv[j - 1] = argv[j]; } // Decrements the argument count. (*argc)--; + // Terminate the array with nullptr. + argv[*argc] = nullptr; + // We also need to decrement the iterator as we just removed // an element. i--; -- cgit v1.1