Allow kernel versions with a + suffix in ParseKernelVersion()

This is needed to support kernel versions like 6.1.90+.

PiperOrigin-RevId: 640936154
This commit is contained in:
Ayush Ranjan
2024-06-06 10:10:40 -07:00
committed by gVisor bot
parent 26df9667ad
commit 4bdb7e9fa0
2 changed files with 4 additions and 1 deletions
+1 -1
View File
@@ -100,7 +100,7 @@ bool operator==(const KernelVersion& first, const KernelVersion& second) {
PosixErrorOr<KernelVersion> ParseKernelVersion(absl::string_view vers_str) {
KernelVersion version = {};
std::vector<std::string> values =
absl::StrSplit(vers_str, absl::ByAnyChar(".-"));
absl::StrSplit(vers_str, absl::ByAnyChar(".-+"));
if (values.size() == 2) {
ASSIGN_OR_RETURN_ERRNO(version.major, Atoi<int>(values[0]));
ASSIGN_OR_RETURN_ERRNO(version.minor, Atoi<int>(values[1]));
+3
View File
@@ -58,6 +58,9 @@ TEST(KernelVersionParsing, ValidateParsing) {
v = ASSERT_NO_ERRNO_AND_VALUE(ParseKernelVersion("4.0"));
ASSERT_TRUE(v == KernelVersion({4, 0, 0}));
v = ASSERT_NO_ERRNO_AND_VALUE(ParseKernelVersion("6.1.90+"));
ASSERT_TRUE(v == KernelVersion({6, 1, 90}));
ASSERT_THAT(ParseKernelVersion("4.a"), PosixErrorIs(EINVAL, ::testing::_));
ASSERT_THAT(ParseKernelVersion("3"), PosixErrorIs(EINVAL, ::testing::_));
ASSERT_THAT(ParseKernelVersion(""), PosixErrorIs(EINVAL, ::testing::_));