[llvm] r187992 - Fix off-by-one error in Regex::isValid

Alexey Samsonov samsonov at google.com
Thu Aug 8 10:32:45 PDT 2013


Author: samsonov
Date: Thu Aug  8 12:32:45 2013
New Revision: 187992

URL: http://llvm.org/viewvc/llvm-project?rev=187992&view=rev
Log:
Fix off-by-one error in Regex::isValid

Modified:
    llvm/trunk/lib/Support/Regex.cpp
    llvm/trunk/unittests/Support/RegexTest.cpp

Modified: llvm/trunk/lib/Support/Regex.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Support/Regex.cpp?rev=187992&r1=187991&r2=187992&view=diff
==============================================================================
--- llvm/trunk/lib/Support/Regex.cpp (original)
+++ llvm/trunk/lib/Support/Regex.cpp Thu Aug  8 12:32:45 2013
@@ -43,7 +43,7 @@ bool Regex::isValid(std::string &Error)
   
   size_t len = llvm_regerror(error, preg, NULL, 0);
   
-  Error.resize(len);
+  Error.resize(len - 1);
   llvm_regerror(error, preg, &Error[0], len);
   return false;
 }

Modified: llvm/trunk/unittests/Support/RegexTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/Support/RegexTest.cpp?rev=187992&r1=187991&r2=187992&view=diff
==============================================================================
--- llvm/trunk/unittests/Support/RegexTest.cpp (original)
+++ llvm/trunk/unittests/Support/RegexTest.cpp Thu Aug  8 12:32:45 2013
@@ -127,4 +127,12 @@ TEST_F(RegexTest, IsLiteralERE) {
   EXPECT_FALSE(Regex::isLiteralERE("abc{1,2}"));
 }
 
+TEST_F(RegexTest, IsValid) {
+  std::string Error;
+  EXPECT_FALSE(Regex("(foo").isValid(Error));
+  EXPECT_EQ("parentheses not balanced", Error);
+  EXPECT_FALSE(Regex("a[b-").isValid(Error));
+  EXPECT_EQ("invalid character range", Error);
+}
+
 }





More information about the llvm-commits mailing list