Commit c72f5c4f authored by David Kalnischkies's avatar David Kalnischkies

deal with empty values properly in deb822 parser

Regression introduced in 8710a36a,
but such fields are unlikely in practice as it is just as simple to not
have a field at all with the same result of not having a value.

Closes: 808102
parent c3c3bd04
......@@ -382,7 +382,9 @@ bool pkgTagSection::Scan(const char *Start,unsigned long MaxLength, bool const R
lastTagHash = AlphaHash(Stop, EndTag - Stop);
// find the beginning of the value
Stop = Colon + 1;
for (; isspace_ascii(*Stop) != 0; ++Stop);
for (; isspace_ascii(*Stop) != 0; ++Stop)
if (*Stop == '\n' && Stop[1] != ' ')
break;
if (Stop >= End)
return false;
lastTagData.StartValue = Stop - Section;
......
......@@ -186,6 +186,7 @@ TEST(TagFileTest, SpacesEverywhere)
"Package: pkgA\n"
"Package: pkgB\n"
"NoSpaces:yes\n"
"NoValue:\n"
"TagSpaces\t :yes\n"
"ValueSpaces: \tyes\n"
"BothSpaces \t:\t yes\n"
......@@ -200,6 +201,7 @@ TEST(TagFileTest, SpacesEverywhere)
EXPECT_TRUE(section.Scan(content.c_str(), content.size()));
EXPECT_TRUE(section.Exists("Package"));
EXPECT_TRUE(section.Exists("NoSpaces"));
EXPECT_TRUE(section.Exists("NoValue"));
EXPECT_TRUE(section.Exists("TagSpaces"));
EXPECT_TRUE(section.Exists("ValueSpaces"));
EXPECT_TRUE(section.Exists("BothSpaces"));
......@@ -209,6 +211,7 @@ TEST(TagFileTest, SpacesEverywhere)
EXPECT_TRUE(section.Exists("Multi-Colon"));
EXPECT_EQ("pkgC", section.FindS("Package"));
EXPECT_EQ("yes", section.FindS("NoSpaces"));
EXPECT_EQ("", section.FindS("NoValue"));
EXPECT_EQ("yes", section.FindS("TagSpaces"));
EXPECT_EQ("yes", section.FindS("ValueSpaces"));
EXPECT_EQ("yes", section.FindS("BothSpaces"));
......@@ -217,5 +220,5 @@ TEST(TagFileTest, SpacesEverywhere)
EXPECT_EQ("yes", section.FindS("Naming Spaces"));
EXPECT_EQ(":yes:", section.FindS("Multi-Colon"));
// overridden values are still present, but not really accessible
EXPECT_EQ(11, section.Count());
EXPECT_EQ(12, section.Count());
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment