This source file includes following definitions.
- TEST
- TEST
#include "base/environment.h"
#include "base/logging.h"
#include "base/memory/scoped_ptr.h"
#include "base/strings/string_number_conversions.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "sandbox/linux/suid/common/sandbox.h"
#include "setuid_sandbox_client.h"
namespace sandbox {
TEST(SetuidSandboxClient, SetupLaunchEnvironment) {
const char kTestValue[] = "This is a test";
scoped_ptr<base::Environment> env(base::Environment::Create());
EXPECT_TRUE(env != NULL);
std::string saved_ld_preload;
bool environment_had_ld_preload;
environment_had_ld_preload = env->GetVar("LD_PRELOAD", &saved_ld_preload);
EXPECT_TRUE(env->SetVar("LD_PRELOAD", kTestValue));
EXPECT_TRUE(env->UnSetVar("LD_ORIGIN_PATH"));
scoped_ptr<SetuidSandboxClient>
sandbox_client(SetuidSandboxClient::Create());
EXPECT_TRUE(sandbox_client != NULL);
EXPECT_TRUE(env->UnSetVar(kSandboxEnvironmentApiRequest));
EXPECT_TRUE(env->UnSetVar(kSandboxEnvironmentApiProvides));
sandbox_client->SetupLaunchEnvironment();
std::string api_request;
EXPECT_TRUE(env->GetVar(kSandboxEnvironmentApiRequest, &api_request));
int api_request_num;
EXPECT_TRUE(base::StringToInt(api_request, &api_request_num));
EXPECT_EQ(api_request_num, kSUIDSandboxApiNumber);
std::string sandbox_ld_preload;
EXPECT_TRUE(env->GetVar("SANDBOX_LD_PRELOAD", &sandbox_ld_preload));
EXPECT_EQ(sandbox_ld_preload, kTestValue);
EXPECT_FALSE(env->HasVar("SANDBOX_LD_ORIGIN_PATH"));
if (environment_had_ld_preload) {
EXPECT_TRUE(env->SetVar("LD_PRELOAD", saved_ld_preload));
} else {
EXPECT_TRUE(env->UnSetVar("LD_PRELOAD"));
}
}
TEST(SetuidSandboxClient, SandboxedClientAPI) {
scoped_ptr<base::Environment> env(base::Environment::Create());
EXPECT_TRUE(env != NULL);
scoped_ptr<SetuidSandboxClient>
sandbox_client(SetuidSandboxClient::Create());
EXPECT_TRUE(sandbox_client != NULL);
EXPECT_TRUE(env->SetVar(kSandboxEnvironmentApiProvides,
base::IntToString(kSUIDSandboxApiNumber)));
EXPECT_TRUE(env->SetVar(kSandboxDescriptorEnvironmentVarName, "1"));
EXPECT_TRUE(env->SetVar(kSandboxPIDNSEnvironmentVarName, "1"));
EXPECT_TRUE(env->UnSetVar(kSandboxNETNSEnvironmentVarName));
EXPECT_TRUE(sandbox_client->IsSuidSandboxUpToDate());
EXPECT_TRUE(sandbox_client->IsSuidSandboxChild());
EXPECT_TRUE(sandbox_client->IsInNewPIDNamespace());
EXPECT_FALSE(sandbox_client->IsInNewNETNamespace());
EXPECT_TRUE(env->SetVar(kSandboxEnvironmentApiProvides,
base::IntToString(kSUIDSandboxApiNumber + 1)));
EXPECT_FALSE(sandbox_client->IsSuidSandboxUpToDate());
EXPECT_FALSE(sandbox_client->IsSandboxed());
}
}