diff --git a/src/rgw/rgw_common.cc b/src/rgw/rgw_common.cc index 207cc4ec7b9..132fd9e809f 100644 --- a/src/rgw/rgw_common.cc +++ b/src/rgw/rgw_common.cc @@ -357,18 +357,17 @@ bool parse_iso8601(const char *s, struct tm *t) } string str; trim_whitespace(p, str); - if (str.size() == 1 && str[0] == 'Z') + int len = str.size(); + + if (len == 1 && str[0] == 'Z') return true; - if (str.size() != 5) { - return false; - } if (str[0] != '.' || - str[str.size() - 1] != 'Z') + str[len - 1] != 'Z') return false; uint32_t ms; - int r = stringtoul(str.substr(1, 3), &ms); + int r = stringtoul(str.substr(1, len - 2), &ms); if (r < 0) return false;