Index: net/der/parse_values_unittest.cc |
diff --git a/net/der/parse_values_unittest.cc b/net/der/parse_values_unittest.cc |
index 8233042418db3e545c275673b59f170e6446ae4a..ea1b5c4e8cca4e28bd85f533fe54b39f05577e50 100644 |
--- a/net/der/parse_values_unittest.cc |
+++ b/net/der/parse_values_unittest.cc |
@@ -12,6 +12,17 @@ namespace net { |
namespace der { |
namespace test { |
+namespace { |
+ |
+template <size_t N> |
+Input FromStringLiteral(const char(&data)[N]) { |
+ // Strings are null-terminated. The null terminating byte shouldn't be |
+ // included in the Input, so the size is N - 1 instead of N. |
+ return Input(reinterpret_cast<const uint8_t*>(data), N - 1); |
+} |
+ |
+} // namespace |
+ |
TEST(ParseValuesTest, ParseBool) { |
uint8_t buf[] = {0xFF, 0x00}; |
Input value(buf, 1); |
@@ -38,117 +49,103 @@ TEST(ParseValuesTest, ParseBool) { |
TEST(ParseValuesTest, ParseTimes) { |
GeneralizedTime out; |
- EXPECT_TRUE(ParseUTCTime(Input("140218161200Z"), &out)); |
+ EXPECT_TRUE(ParseUTCTime(FromStringLiteral("140218161200Z"), &out)); |
// DER-encoded UTCTime must end with 'Z'. |
- EXPECT_FALSE(ParseUTCTime(Input("140218161200X"), &out)); |
+ EXPECT_FALSE(ParseUTCTime(FromStringLiteral("140218161200X"), &out)); |
// Check that a negative number (-4 in this case) doesn't get parsed as |
// a 2-digit number. |
- EXPECT_FALSE(ParseUTCTime(Input("-40218161200Z"), &out)); |
+ EXPECT_FALSE(ParseUTCTime(FromStringLiteral("-40218161200Z"), &out)); |
// Check that numbers with a leading 0 don't get parsed in octal by making |
// the second digit an invalid octal digit (e.g. 09). |
- EXPECT_TRUE(ParseUTCTime(Input("090218161200Z"), &out)); |
+ EXPECT_TRUE(ParseUTCTime(FromStringLiteral("090218161200Z"), &out)); |
// Check that the length is validated. |
- EXPECT_FALSE(ParseUTCTime(Input("140218161200"), &out)); |
- EXPECT_FALSE(ParseUTCTime(Input("140218161200Z0"), &out)); |
- EXPECT_FALSE(ParseUTCTimeRelaxed(Input("140218161200"), &out)); |
- EXPECT_FALSE(ParseUTCTimeRelaxed(Input("140218161200Z0"), &out)); |
+ EXPECT_FALSE(ParseUTCTime(FromStringLiteral("140218161200"), &out)); |
+ EXPECT_FALSE(ParseUTCTime(FromStringLiteral("140218161200Z0"), &out)); |
+ EXPECT_FALSE(ParseUTCTimeRelaxed(FromStringLiteral("140218161200"), &out)); |
+ EXPECT_FALSE(ParseUTCTimeRelaxed(FromStringLiteral("140218161200Z0"), &out)); |
// Check strictness of UTCTime parsers. |
- EXPECT_FALSE(ParseUTCTime(Input("1402181612Z"), &out)); |
- EXPECT_TRUE(ParseUTCTimeRelaxed(Input("1402181612Z"), &out)); |
+ EXPECT_FALSE(ParseUTCTime(FromStringLiteral("1402181612Z"), &out)); |
+ EXPECT_TRUE(ParseUTCTimeRelaxed(FromStringLiteral("1402181612Z"), &out)); |
// Check that the time ends in Z. |
- EXPECT_FALSE(ParseUTCTimeRelaxed(Input("1402181612Z0"), &out)); |
+ EXPECT_FALSE(ParseUTCTimeRelaxed(FromStringLiteral("1402181612Z0"), &out)); |
// Check format of GeneralizedTime. |
// Leap seconds are allowed. |
- EXPECT_TRUE(ParseGeneralizedTime(Input("20140218161260Z"), &out)); |
+ EXPECT_TRUE(ParseGeneralizedTime(FromStringLiteral("20140218161260Z"), &out)); |
// But nothing larger than a leap second. |
- EXPECT_FALSE(ParseGeneralizedTime(Input("20140218161261Z"), &out)); |
+ EXPECT_FALSE( |
+ ParseGeneralizedTime(FromStringLiteral("20140218161261Z"), &out)); |
// Minutes only go up to 59. |
- EXPECT_FALSE(ParseGeneralizedTime(Input("20140218166000Z"), &out)); |
+ EXPECT_FALSE( |
+ ParseGeneralizedTime(FromStringLiteral("20140218166000Z"), &out)); |
// Hours only go up to 23. |
- EXPECT_FALSE(ParseGeneralizedTime(Input("20140218240000Z"), &out)); |
+ EXPECT_FALSE( |
+ ParseGeneralizedTime(FromStringLiteral("20140218240000Z"), &out)); |
// The 0th day of a month is invalid. |
- EXPECT_FALSE(ParseGeneralizedTime(Input("20140200161200Z"), &out)); |
+ EXPECT_FALSE( |
+ ParseGeneralizedTime(FromStringLiteral("20140200161200Z"), &out)); |
// The 0th month is invalid. |
- EXPECT_FALSE(ParseGeneralizedTime(Input("20140018161200Z"), &out)); |
+ EXPECT_FALSE( |
+ ParseGeneralizedTime(FromStringLiteral("20140018161200Z"), &out)); |
// Months greater than 12 are invalid. |
- EXPECT_FALSE(ParseGeneralizedTime(Input("20141318161200Z"), &out)); |
+ EXPECT_FALSE( |
+ ParseGeneralizedTime(FromStringLiteral("20141318161200Z"), &out)); |
// Some months have 31 days. |
- EXPECT_TRUE(ParseGeneralizedTime(Input("20140131000000Z"), &out)); |
+ EXPECT_TRUE(ParseGeneralizedTime(FromStringLiteral("20140131000000Z"), &out)); |
// September has only 30 days. |
- EXPECT_FALSE(ParseGeneralizedTime(Input("20140931000000Z"), &out)); |
+ EXPECT_FALSE( |
+ ParseGeneralizedTime(FromStringLiteral("20140931000000Z"), &out)); |
// February has only 28 days... |
- EXPECT_FALSE(ParseGeneralizedTime(Input("20140229000000Z"), &out)); |
+ EXPECT_FALSE( |
+ ParseGeneralizedTime(FromStringLiteral("20140229000000Z"), &out)); |
// ... unless it's a leap year. |
- EXPECT_TRUE(ParseGeneralizedTime(Input("20160229000000Z"), &out)); |
+ EXPECT_TRUE(ParseGeneralizedTime(FromStringLiteral("20160229000000Z"), &out)); |
// There aren't any leap days in years divisible by 100... |
- EXPECT_FALSE(ParseGeneralizedTime(Input("21000229000000Z"), &out)); |
+ EXPECT_FALSE( |
+ ParseGeneralizedTime(FromStringLiteral("21000229000000Z"), &out)); |
// ...unless it's also divisible by 400. |
- EXPECT_TRUE(ParseGeneralizedTime(Input("20000229000000Z"), &out)); |
+ EXPECT_TRUE(ParseGeneralizedTime(FromStringLiteral("20000229000000Z"), &out)); |
// Check more perverse invalid inputs. |
- const uint8_t trailing_null_bytes[] = {'2', |
- '0', |
- '0', |
- '0', |
- '1', |
- '2', |
- '3', |
- '1', |
- '0', |
- '1', |
- '0', |
- '2', |
- '0', |
- '3', |
- 'Z', |
- '\0'}; |
- Input trailing_null(trailing_null_bytes, sizeof(trailing_null_bytes)); |
- EXPECT_FALSE(ParseGeneralizedTime(trailing_null, &out)); |
- const uint8_t embedded_null_bytes[] = {'2', |
- '0', |
- '0', |
- '\0', |
- '1', |
- '2', |
- '3', |
- '1', |
- '0', |
- '1', |
- '0', |
- '2', |
- '0', |
- '3', |
- 'Z'}; |
- Input embedded_null(embedded_null_bytes, sizeof(embedded_null_bytes)); |
- EXPECT_FALSE(ParseGeneralizedTime(embedded_null, &out)); |
+ // Check that trailing null bytes are not ignored. |
+ EXPECT_FALSE( |
+ ParseGeneralizedTime(FromStringLiteral("20001231010203Z\0"), &out)); |
+ |
+ // Check what happens when a null byte is in the middle of the input. |
+ EXPECT_FALSE(ParseGeneralizedTime(FromStringLiteral( |
+ "200\0" |
+ "1231010203Z"), |
+ &out)); |
// The year can't be in hex. |
- EXPECT_FALSE(ParseGeneralizedTime(Input("0x201231000000Z"), &out)); |
+ EXPECT_FALSE( |
+ ParseGeneralizedTime(FromStringLiteral("0x201231000000Z"), &out)); |
// The last byte must be 'Z'. |
- EXPECT_FALSE(ParseGeneralizedTime(Input("20001231000000X"), &out)); |
+ EXPECT_FALSE( |
+ ParseGeneralizedTime(FromStringLiteral("20001231000000X"), &out)); |
// Check that the length is validated. |
- EXPECT_FALSE(ParseGeneralizedTime(Input("20140218161200"), &out)); |
- EXPECT_FALSE(ParseGeneralizedTime(Input("20140218161200Z0"), &out)); |
+ EXPECT_FALSE(ParseGeneralizedTime(FromStringLiteral("20140218161200"), &out)); |
+ EXPECT_FALSE( |
+ ParseGeneralizedTime(FromStringLiteral("20140218161200Z0"), &out)); |
} |
TEST(ParseValuesTest, TimesCompare) { |
@@ -156,9 +153,11 @@ TEST(ParseValuesTest, TimesCompare) { |
GeneralizedTime time2; |
GeneralizedTime time3; |
- ASSERT_TRUE(ParseGeneralizedTime(Input("20140218161200Z"), &time1)); |
- ASSERT_TRUE(ParseUTCTime(Input("150218161200Z"), &time2)); |
- ASSERT_TRUE(ParseGeneralizedTime(Input("20160218161200Z"), &time3)); |
+ ASSERT_TRUE( |
+ ParseGeneralizedTime(FromStringLiteral("20140218161200Z"), &time1)); |
+ ASSERT_TRUE(ParseUTCTime(FromStringLiteral("150218161200Z"), &time2)); |
+ ASSERT_TRUE( |
+ ParseGeneralizedTime(FromStringLiteral("20160218161200Z"), &time3)); |
EXPECT_TRUE(time1 < time2); |
EXPECT_TRUE(time2 < time3); |
EXPECT_TRUE(time1 < time3); |