Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(205)

Side by Side Diff: sandbox/linux/suid/client/setuid_sandbox_client_unittest.cc

Issue 10807059: Refactor the setuid sandbox client code to its own class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address reviewer's comments and other minor nits. Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sandbox/linux/suid/client/setuid_sandbox_client.cc ('k') | sandbox/linux/suid/common/sandbox.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "base/environment.h"
6 #include "base/logging.h"
7 #include "base/memory/scoped_ptr.h"
8 #include "base/string_number_conversions.h"
9 #include "testing/gtest/include/gtest/gtest.h"
10
11 #include "sandbox/linux/suid/common/sandbox.h"
12 #include "setuid_sandbox_client.h"
13
14 namespace sandbox {
15
16 TEST(SetuidSandboxClient, SetupLaunchEnvironment) {
17 const char kTestValue[] = "This is a test";
18 scoped_ptr<base::Environment> env(base::Environment::Create());
19 EXPECT_TRUE(env != NULL);
20
21 // Setup environment variables to save or not save.
22 EXPECT_TRUE(env->SetVar("LD_PRELOAD", kTestValue));
23 EXPECT_TRUE(env->UnSetVar("LD_ORIGIN_PATH"));
24
25 scoped_ptr<SetuidSandboxClient>
26 sandbox_client(SetuidSandboxClient::Create());
27 EXPECT_TRUE(sandbox_client != NULL);
28
29 // Make sure the environment is clean.
30 EXPECT_TRUE(env->UnSetVar(kSandboxEnvironmentApiRequest));
31 EXPECT_TRUE(env->UnSetVar(kSandboxEnvironmentApiProvides));
32
33 sandbox_client->SetupLaunchEnvironment();
34
35 // Check if the requested API environment was set.
36 std::string api_request;
37 EXPECT_TRUE(env->GetVar(kSandboxEnvironmentApiRequest, &api_request));
38 int api_request_num;
39 EXPECT_TRUE(base::StringToInt(api_request, &api_request_num));
40 EXPECT_EQ(api_request_num, kSUIDSandboxApiNumber);
41
42 // Now check if LD_PRELOAD was saved to SANDBOX_LD_PRELOAD.
43 std::string sandbox_ld_preload;
44 EXPECT_TRUE(env->GetVar("SANDBOX_LD_PRELOAD", &sandbox_ld_preload));
45 EXPECT_EQ(sandbox_ld_preload, kTestValue);
46
47 // Check that LD_ORIGIN_PATH was not saved.
48 EXPECT_FALSE(env->HasVar("SANDBOX_LD_ORIGIN_PATH"));
49 }
50
51 TEST(SetuidSandboxClient, SandboxedClientAPI) {
52 scoped_ptr<base::Environment> env(base::Environment::Create());
53 EXPECT_TRUE(env != NULL);
54
55 scoped_ptr<SetuidSandboxClient>
56 sandbox_client(SetuidSandboxClient::Create());
57 EXPECT_TRUE(sandbox_client != NULL);
58
59 // Set-up a fake environment as if we went through the setuid sandbox.
60 EXPECT_TRUE(env->SetVar(kSandboxEnvironmentApiProvides,
61 base::IntToString(kSUIDSandboxApiNumber)));
62 EXPECT_TRUE(env->SetVar(kSandboxDescriptorEnvironmentVarName, "1"));
63 EXPECT_TRUE(env->SetVar(kSandboxPIDNSEnvironmentVarName, "1"));
64 EXPECT_TRUE(env->UnSetVar(kSandboxNETNSEnvironmentVarName));
65
66 // Check the API.
67 EXPECT_TRUE(sandbox_client->IsSuidSandboxUpToDate());
68 EXPECT_TRUE(sandbox_client->IsSuidSandboxChild());
69 EXPECT_TRUE(sandbox_client->IsInNewPIDNamespace());
70 EXPECT_FALSE(sandbox_client->IsInNewNETNamespace());
71
72 // Forge an incorrect API version and check.
73 EXPECT_TRUE(env->SetVar(kSandboxEnvironmentApiProvides,
74 base::IntToString(kSUIDSandboxApiNumber + 1)));
75 EXPECT_FALSE(sandbox_client->IsSuidSandboxUpToDate());
76 }
77
78 } // namespace sandbox
OLDNEW
« no previous file with comments | « sandbox/linux/suid/client/setuid_sandbox_client.cc ('k') | sandbox/linux/suid/common/sandbox.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698