Reject depfiles that don't contain a : after the target name.
authorNico Weber <nicolasweber@gmx.de>
Thu, 12 Mar 2015 15:59:45 +0000 (11:59 -0400)
committerNico Weber <nicolasweber@gmx.de>
Thu, 12 Mar 2015 15:59:45 +0000 (11:59 -0400)
This is a prerequisite for fixing #417.

src/build_test.cc
src/depfile_parser.cc
src/depfile_parser.in.cc
src/depfile_parser_test.cc

index bd1cd30..82da57b 100644 (file)
@@ -816,8 +816,7 @@ TEST_F(BuildTest, DepFileParseError) {
   fs_.Create("foo.c", "");
   fs_.Create("foo.o.d", "randomtext\n");
   EXPECT_FALSE(builder_.AddTarget("foo.o", &err));
-  EXPECT_EQ("expected depfile 'foo.o.d' to mention 'foo.o', got 'randomtext'",
-            err);
+  EXPECT_EQ("foo.o.d: expected ':' in depfile", err);
 }
 
 TEST_F(BuildTest, OrderOnlyDeps) {
index 4ca3943..7268f31 100644 (file)
@@ -230,5 +230,9 @@ yy16:
       return false;
     }
   }
+  if (parsing_targets) {
+    *err = "expected ':' in depfile";
+    return false;
+  }
   return true;
 }
index b59baf0..deaee5b 100644 (file)
@@ -112,5 +112,9 @@ bool DepfileParser::Parse(string* content, string* err) {
       return false;
     }
   }
+  if (parsing_targets) {
+    *err = "expected ':' in depfile";
+    return false;
+  }
   return true;
 }
index e67ef79..8b57a1e 100644 (file)
@@ -106,7 +106,7 @@ TEST_F(DepfileParserTest, Escapes) {
   // it through.
   string err;
   EXPECT_TRUE(Parse(
-"\\!\\@\\#$$\\%\\^\\&\\\\",
+"\\!\\@\\#$$\\%\\^\\&\\\\:",
       &err));
   ASSERT_EQ("", err);
   EXPECT_EQ("\\!\\@#$\\%\\^\\&\\",