summaryrefslogtreecommitdiffstats
path: root/sandbox/linux
diff options
context:
space:
mode:
authorjln@chromium.org <jln@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-09 05:18:28 +0000
committerjln@chromium.org <jln@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-09 05:18:28 +0000
commit64c8669b4b57939651b4578437bee65a0ed225b1 (patch)
tree7107a0a4520f9b3ea668bd1a0c44768423f7e5c6 /sandbox/linux
parente7ceccb72f389261c3eba8121d78f60f5a1744d1 (diff)
downloadchromium_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.cc12
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) {