[PATCH] D105120: [clang] Fix UB when string.front() is used for the empty string
Dmitry Polukhin via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jun 30 01:16:32 PDT 2021
This revision was automatically updated to reflect the committed changes.
Closed by commit rGfceaf8621179: [clang] Fix UB when string.front() is used for the empty string (authored by DmitryPolukhin).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D105120/new/
https://reviews.llvm.org/D105120
Files:
clang/lib/Tooling/ExpandResponseFilesCompilationDatabase.cpp
clang/unittests/Tooling/CompilationDatabaseTest.cpp
Index: clang/unittests/Tooling/CompilationDatabaseTest.cpp
===================================================================
--- clang/unittests/Tooling/CompilationDatabaseTest.cpp
+++ clang/unittests/Tooling/CompilationDatabaseTest.cpp
@@ -700,6 +700,10 @@
SmallVector<StringRef, 8> Argv = {Clang, File, "-D", File};
llvm::SplitString(Flags, Argv);
+ // Trim double quotation from the argumnets if any.
+ for (auto *It = Argv.begin(); It != Argv.end(); ++It)
+ *It = It->trim("\"");
+
SmallString<32> Dir;
llvm::sys::path::system_temp_directory(false, Dir);
@@ -962,5 +966,12 @@
EXPECT_EQ(getCommand("bar.cpp"), "clang bar.cpp -D bar.cpp -Dflag");
}
+TEST_F(ExpandResponseFilesTest, ExpandResponseFilesEmptyArgument) {
+ addFile(path(StringRef("rsp1.rsp")), "-Dflag");
+
+ add("foo.cpp", "clang", "@rsp1.rsp \"\"");
+ EXPECT_EQ(getCommand("foo.cpp"), "clang foo.cpp -D foo.cpp -Dflag ");
+}
+
} // end namespace tooling
} // end namespace clang
Index: clang/lib/Tooling/ExpandResponseFilesCompilationDatabase.cpp
===================================================================
--- clang/lib/Tooling/ExpandResponseFilesCompilationDatabase.cpp
+++ clang/lib/Tooling/ExpandResponseFilesCompilationDatabase.cpp
@@ -54,7 +54,8 @@
Argv.reserve(Cmd.CommandLine.size());
for (auto &Arg : Cmd.CommandLine) {
Argv.push_back(Arg.c_str());
- SeenRSPFile |= Arg.front() == '@';
+ if (!Arg.empty())
+ SeenRSPFile |= Arg.front() == '@';
}
if (!SeenRSPFile)
continue;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D105120.355467.patch
Type: text/x-patch
Size: 1574 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20210630/c1b37b02/attachment-0001.bin>
More information about the cfe-commits
mailing list