forked from OSchip/llvm-project
Check special-case-list regex before insertion.
Summary: Checks that the supplied regex to SpecialCaseList::Matcher::insert(..) is non-empty. Reported by OSS-fuzz: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3688 Verified that this fixes the provided assertion failure (built with {asan, fuzzer}): ``` mitchp@mitchp2:~/llvm-build/git-fuzz$ ninja llvm-special-case-list-fuzzer[12/12] Linking CXX executable bin/llvm-special-case-list-fuzzer mitchp@mitchp2:~/llvm-build/git-fuzz$ bin/llvm-special-case-list-fuzzer ~/Downloads/clusterfuzz-testcase-6748633157337088 INFO: Seed: 1697404507 INFO: Loaded 1 modules (18581 inline 8-bit counters): 18581 [0x9e9f60, 0x9ee7f5), INFO: Loaded 1 PC tables (18581 PCs): 18581 [0x9ee7f8,0xa37148), bin/llvm-special-case-list-fuzzer: Running 1 inputs 1 time(s) each. Running: /usr/local/google/home/mitchp/Downloads/clusterfuzz-testcase-6748633157337088 Executed /usr/local/google/home/mitchp/Downloads/clusterfuzz-testcase-6748633157337088 in 0 ms *** *** NOTE: fuzzing was not performed, you have only *** executed the target code on a fixed set of inputs. *** mitchp@mitchp2:~/llvm-build/git-fuzz$ ``` Reviewers: kcc, vsk Reviewed By: vsk Subscribers: vsk, llvm-commits, vlad.tsyrklevich Differential Revision: https://reviews.llvm.org/D39212 llvm-svn: 316537
This commit is contained in:
parent
506ecbb946
commit
fa2eda8609
|
@ -28,6 +28,11 @@ namespace llvm {
|
|||
|
||||
bool SpecialCaseList::Matcher::insert(std::string Regexp,
|
||||
std::string &REError) {
|
||||
if (Regexp.empty()) {
|
||||
REError = "Supplied regexp was blank";
|
||||
return false;
|
||||
}
|
||||
|
||||
if (Regex::isLiteralERE(Regexp)) {
|
||||
Strings.insert(Regexp);
|
||||
return true;
|
||||
|
|
|
@ -67,6 +67,9 @@ TEST_F(SpecialCaseListTest, SectionRegexErrorHandling) {
|
|||
|
||||
EXPECT_EQ(makeSpecialCaseList("[[]", Error), nullptr);
|
||||
EXPECT_TRUE(((StringRef)Error).startswith("malformed regex for section [: "));
|
||||
|
||||
EXPECT_EQ(makeSpecialCaseList("src:=", Error), nullptr);
|
||||
EXPECT_TRUE(((StringRef)Error).endswith("Supplied regexp was blank"));
|
||||
}
|
||||
|
||||
TEST_F(SpecialCaseListTest, Section) {
|
||||
|
|
Loading…
Reference in New Issue