Import of CCTZ from GitHub. Fixes #2014 PiperOrigin-RevId: 869283027 Change-Id: Ibd7ef8507a8968d1b35fc45a2f023a7d1bde7691
diff --git a/absl/time/internal/cctz/src/time_zone_format.cc b/absl/time/internal/cctz/src/time_zone_format.cc index 5b80c80..c31a3a0 100644 --- a/absl/time/internal/cctz/src/time_zone_format.cc +++ b/absl/time/internal/cctz/src/time_zone_format.cc
@@ -978,7 +978,7 @@ while (std::isspace(*data)) ++data; // parse() must consume the entire input string. - if (*data != '\0') { + if (data != input.data() + input.size()) { if (err != nullptr) *err = "Illegal trailing data in input string"; return false; }
diff --git a/absl/time/internal/cctz/src/time_zone_format_test.cc b/absl/time/internal/cctz/src/time_zone_format_test.cc index a270f4d..19dc973 100644 --- a/absl/time/internal/cctz/src/time_zone_format_test.cc +++ b/absl/time/internal/cctz/src/time_zone_format_test.cc
@@ -967,6 +967,9 @@ EXPECT_FALSE(parse("%Ez", "+-0:00", tz, &tp)); EXPECT_FALSE(parse("%z", "-00-0", tz, &tp)); EXPECT_FALSE(parse("%Ez", "-00:-0", tz, &tp)); + + // Check that we do not accept strings with embedded NULs. + EXPECT_FALSE(parse("%Y", std::string("2026\0payload", 12), tz, &tp)); } TEST(Parse, PosixConversions) {