Merge branch 'tizen' into nether
[platform/core/test/security-tests.git] / src / ckm-integration / process-settings / change-smack.cpp
1 /*
2  *  Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  *  Licensed under the Apache License, Version 2.0 (the "License");
5  *  you may not use this file except in compliance with the License.
6  *  You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  *  Unless required by applicable law or agreed to in writing, software
11  *  distributed under the License is distributed on an "AS IS" BASIS,
12  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  *  See the License for the specific language governing permissions and
14  *  limitations under the License
15  */
16 /*
17  * @file       change-smack.cpp
18  * @author     Bartlomiej Grzelewski (b.grzelewski@samsung.com)
19  * @version    1.0
20  */
21 #include <sys/smack.h>
22
23 #include <tests_common.h>
24
25 #include <process-settings/change-smack.h>
26
27 namespace ProcessSettings {
28
29 ChangeSmack::ChangeSmack(const Policy &policy)
30   : m_policy(policy)
31 {}
32
33 void ChangeSmack::Apply() {
34     char *my_label = nullptr;
35
36     RUNNER_ASSERT(-1 != smack_new_label_from_self(&my_label));
37
38     if (my_label)
39         m_originalLabel = my_label;
40
41     free(my_label);
42
43     RUNNER_ASSERT_MSG(0 == smack_set_label_for_self(m_policy.GetSmackLabel().c_str()),
44         "Error in smack_set_label_for_self(" << m_policy.GetSmackLabel() << ")");
45 }
46
47 void ChangeSmack::Revoke() {
48     RUNNER_ASSERT_MSG(0 == smack_set_label_for_self(m_originalLabel.c_str()),
49         "Error in smack_set_label_for_self(" << m_originalLabel << ")");
50 }
51
52 ChangeSmack::~ChangeSmack() {}
53
54 } // namespace ProcessSettings
55