diff options
author | jln@chromium.org <jln@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-09 05:18:28 +0000 |
---|---|---|
committer | jln@chromium.org <jln@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-09 05:18:28 +0000 |
commit | 64c8669b4b57939651b4578437bee65a0ed225b1 (patch) | |
tree | 7107a0a4520f9b3ea668bd1a0c44768423f7e5c6 /sandbox/linux | |
parent | e7ceccb72f389261c3eba8121d78f60f5a1744d1 (diff) | |
download | chromium_src-64c8669b4b57939651b4578437bee65a0ed225b1.zip chromium_src-64c8669b4b57939651b4578437bee65a0ed225b1.tar.gz chromium_src-64c8669b4b57939651b4578437bee65a0ed225b1.tar.bz2 |
Setuid sandbox unittest: fix environment.
Don't pollute LD_PRELOAD in the environment after a test runs.
BUG=
Review URL: https://chromiumcodereview.appspot.com/10823251
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@150739 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sandbox/linux')
-rw-r--r-- | sandbox/linux/suid/client/setuid_sandbox_client_unittest.cc | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/sandbox/linux/suid/client/setuid_sandbox_client_unittest.cc b/sandbox/linux/suid/client/setuid_sandbox_client_unittest.cc index 764ccb1..135e7fc 100644 --- a/sandbox/linux/suid/client/setuid_sandbox_client_unittest.cc +++ b/sandbox/linux/suid/client/setuid_sandbox_client_unittest.cc @@ -18,6 +18,10 @@ TEST(SetuidSandboxClient, SetupLaunchEnvironment) { scoped_ptr<base::Environment> env(base::Environment::Create()); EXPECT_TRUE(env != NULL); + std::string saved_ld_preload; + bool environment_had_ld_preload; + // First, back-up the real LD_PRELOAD if any. + environment_had_ld_preload = env->GetVar("LD_PRELOAD", &saved_ld_preload); // Setup environment variables to save or not save. EXPECT_TRUE(env->SetVar("LD_PRELOAD", kTestValue)); EXPECT_TRUE(env->UnSetVar("LD_ORIGIN_PATH")); @@ -46,6 +50,14 @@ TEST(SetuidSandboxClient, SetupLaunchEnvironment) { // Check that LD_ORIGIN_PATH was not saved. EXPECT_FALSE(env->HasVar("SANDBOX_LD_ORIGIN_PATH")); + + // We should not forget to restore LD_PRELOAD at the end, or this environment + // variable will affect the next running tests! + if (environment_had_ld_preload) { + EXPECT_TRUE(env->SetVar("LD_PRELOAD", saved_ld_preload)); + } else { + EXPECT_TRUE(env->UnSetVar("LD_PRELOAD")); + } } TEST(SetuidSandboxClient, SandboxedClientAPI) { |