Added test cases for SMACK L-access mode
[platform/core/test/security-tests.git] / tests / common / tests_common.cpp
1 /*
2  * Copyright (c) 2013 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 /*
18  * @file        tests_common.cpp
19  * @author      Lukasz Kostyra (l.kostyra@partner.samsung.com)
20  * @version     1.0
21  * @brief       Common functions and macros used in security-tests package.
22  */
23
24 #include "tests_common.h"
25 #include <unistd.h>
26
27 int DB::Transaction::db_result = PC_OPERATION_SUCCESS;
28
29 const char *WGT_APP_ID = "QwCqJ0ttyS";
30
31 int smack_runtime_check(void)
32 {
33     static int smack_present = -1;
34     if (-1 == smack_present) {
35         if (smack_smackfs_path()) {
36             smack_present = 1;
37         } else {
38             smack_present = 0;
39         }
40     }
41     return smack_present;
42 }
43
44 int smack_check(void)
45 {
46 #ifndef WRT_SMACK_ENABLED
47     return 0;
48 #else
49     return smack_runtime_check();
50 #endif
51 }
52
53 void closeFdPtr(int *fd)
54 {
55     close(*fd);
56 }
57
58 /**
59  * Dropping root privileges
60  * returns 0 on success, 1 on error
61  */
62 int drop_root_privileges(void)
63 {
64     if (getuid() == 0) {
65         /* process is running as root, drop privileges */
66         if (setgid(APP_GID) != 0)
67             return 1;
68         if (setuid(APP_UID) != 0)
69             return 1;
70     }
71     uid_t uid = getuid();
72     if (uid == APP_UID)
73         return 0;
74
75     return 1;
76 }
77
78 void setLabelForSelf(const int line, const char *label)
79 {
80     int ret = smack_set_label_for_self(label);
81     RUNNER_ASSERT_MSG(ret == 0, "Error in smack_set_label_for_self(): " << ret << ", line: " << line);
82 }
83