Improved safety with null pointer check in SetEnv class.

This commit is contained in:
LeilaSh 2024-04-14 18:03:57 +07:00
parent 5197b1a8e6
commit 8e828f3fdd

View File

@ -23,8 +23,14 @@ class SetEnv {
have_saved_value_ = true; have_saved_value_ = true;
} }
if (value == nullptr) { if (value == nullptr) {
if (name == nullptr || strlen(name) == 0) {
throw std::invalid_argument("Environment variable name is null or empty.");
}
GTEST_CHECK_POSIX_SUCCESS_(unsetenv(name)); GTEST_CHECK_POSIX_SUCCESS_(unsetenv(name));
} else { } else {
if (name == nullptr || strlen(name) == 0) {
throw std::invalid_argument("Environment variable name is null or empty.");
}
GTEST_CHECK_POSIX_SUCCESS_(setenv(name, value, 1 /*overwrite*/)); GTEST_CHECK_POSIX_SUCCESS_(setenv(name, value, 1 /*overwrite*/));
} }
} }
@ -34,6 +40,9 @@ class SetEnv {
GTEST_CHECK_POSIX_SUCCESS_( GTEST_CHECK_POSIX_SUCCESS_(
setenv(name_.c_str(), saved_value_.c_str(), 1 /*overwrite*/)); setenv(name_.c_str(), saved_value_.c_str(), 1 /*overwrite*/));
} else { } else {
if (name_.empty()) {
throw std::invalid_argument("Environment variable name is null or empty.");
}
GTEST_CHECK_POSIX_SUCCESS_(unsetenv(name_.c_str())); GTEST_CHECK_POSIX_SUCCESS_(unsetenv(name_.c_str()));
} }
} }