Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b9f05483 authored by Adam Lesinski's avatar Adam Lesinski
Browse files

AAPT2: Do not interpret %n as a format specifier in string resources

%n is a special value marking a platform independent newline and is
not to be considered a format argument.

Bug: 37132275
Test: make aapt2_tests
Change-Id: I806521e44afe20004344dee9f18ecee6cc7086ea
parent 63c5c946
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -843,4 +843,9 @@ TEST_F(ResourceParserTest, ParseElementWithNoValue) {
  EXPECT_THAT(*str->value, Eq(""));
}

TEST_F(ResourceParserTest, ParsePlatformIndependentNewline) {
  std::string input = R"(<string name="foo">%1$s %n %2$s</string>)";
  ASSERT_TRUE(TestParse(input));
}

}  // namespace aapt
+1 −1
Original line number Diff line number Diff line
@@ -203,7 +203,7 @@ bool VerifyJavaStringFormat(const StringPiece& str) {
    if (*c == '%' && c + 1 < end) {
      c++;

      if (*c == '%') {
      if (*c == '%' || *c == 'n') {
        c++;
        continue;
      }