Index: sandbox/linux/suid/client/setuid_sandbox_client_unittest.cc |
diff --git a/sandbox/linux/suid/client/setuid_sandbox_client_unittest.cc b/sandbox/linux/suid/client/setuid_sandbox_client_unittest.cc |
index 764ccb10f68e3ff9f189e39ddf14948824e61e21..135e7fc07807918bd83b8b15528fb88e94c0e011 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) { |