2 * Copyright (c) 2013 Samsung Electronics Co., Ltd All Rights Reserved
5 * @file security_server_tests_weird_arguments.cpp
6 * @author Zbigniew Jasinski (z.jasinski@samsung.com)
8 * @brief Test cases for security server
11 #include "tests_common.h"
12 #include "security-server.h"
13 #include <dpl/test/test_runner.h>
14 #include <dpl/log/log.h>
16 #define SECURITY_SERVER_MAX_OBJ_NAME 30
18 RUNNER_TEST_GROUP_INIT(SECURITY_SERVER_TESTS_WEIRD_ARGUMENTS);
20 RUNNER_TEST(tc01_security_server_get_gid_weird_input_case)
23 char weird[] = {static_cast <char> (0xe3), 0x79, static_cast <char> (0x82), 0x0};
25 /* normal param case */
26 ret = security_server_get_gid("tel_sim");
27 RUNNER_ASSERT_MSG(ret > -1, "ret: " << ret);
29 /* wrong param case */
30 ret = security_server_get_gid("elephony_akecall");
31 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_NO_SUCH_OBJECT, "ret: " << ret);
33 /* weird param case */
34 ret = security_server_get_gid(weird);
35 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_NO_SUCH_OBJECT, "ret: " << ret);
38 ret = security_server_get_gid(NULL);
39 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
41 /* param too long case */
42 ret = security_server_get_gid("abcdefghijklmnopqrstuvwxyz01234");
43 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
45 /* empty param case */
46 ret = security_server_get_gid("");
47 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
50 /* from security_server_tests_server.cpp */
52 RUNNER_TEST(tc02_security_server_get_object_name_weird_input_case)
55 gid_t gid = DB_ALARM_GID;
57 /* null object case */
60 ret = security_server_get_object_name(gid, object, sizeof(object));
61 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
63 /* buffer to small case */
66 ret = security_server_get_object_name(gid, object1, sizeof(object1));
67 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_BUFFER_TOO_SMALL, "ret: " << ret);
71 char object2[SECURITY_SERVER_MAX_OBJ_NAME];
73 ret = security_server_get_object_name(gid, object2, sizeof(object2));
74 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_NO_SUCH_OBJECT, "ret: " << ret);
81 ret = security_server_get_object_name(gid, object2, sizeof(object2));
82 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_NO_SUCH_OBJECT, "ret: " << ret);
84 /* invalid gid case */
87 ret = security_server_get_object_name(gid, object2, sizeof(object2));
88 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_NO_SUCH_OBJECT, "ret: " << ret);
91 RUNNER_TEST(tc03_security_server_request_cookie_weird_input_case)
94 size_t cookie_size = security_server_get_cookie_size();
96 /* null cookie case */
99 ret = security_server_request_cookie(cookie, cookie_size);
100 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
102 /* buffer size too small case */
104 char cookie2[cookie_size];
106 ret = security_server_request_cookie(cookie2, cookie_size);
107 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_BUFFER_TOO_SMALL, "ret: " << ret);
110 RUNNER_TEST(tc04_security_server_check_privilege_weird_input_case)
113 size_t cookie_size = security_server_get_cookie_size();
114 gid_t gid = DB_ALARM_GID;
116 /* null cookie case */
119 ret = security_server_check_privilege(cookie, gid);
120 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
122 char cookie2[cookie_size];
124 ret = security_server_request_cookie(cookie2, cookie_size);
125 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_SUCCESS, "ret: " << ret);
130 ret = security_server_check_privilege(cookie2, gid);
131 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_ACCESS_DENIED, "ret: " << ret);
133 RUNNER_TEST(tc05_security_server_check_privilege_by_cookie_weird_input_case)
136 size_t cookie_size = security_server_get_cookie_size();;
137 const char *object = "telephony_makecall";
138 const char *access_rights = "r";
140 /* null cookie case */
142 ret = security_server_check_privilege_by_cookie(cookie, object, access_rights);
143 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
145 /* null object case */
146 char *object2 = NULL;
147 char cookie2[cookie_size];
149 ret = security_server_request_cookie(cookie2, cookie_size);
150 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_SUCCESS, "ret: " << ret);
152 ret = security_server_check_privilege_by_cookie(cookie2, object2, access_rights);
153 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
155 /* null access rights case */
156 access_rights = NULL;
157 ret = security_server_check_privilege_by_cookie(cookie2, object, access_rights);
158 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
161 RUNNER_TEST_SMACK(tc06_security_server_check_privilege_by_sockfd_weird_input_case)
165 const char *object = "telephony_makecall";
166 const char *access_rights = "r";
168 /* invalid sockfd case */
169 ret = security_server_check_privilege_by_sockfd(sockfd, object, access_rights);
170 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
173 /* null object case */
174 char *object2 = NULL;
175 ret = security_server_check_privilege_by_sockfd(sockfd, object2, access_rights);
176 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
178 /* null access rights case */
179 access_rights = NULL;
180 ret = security_server_check_privilege_by_sockfd(sockfd, object, access_rights);
181 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM, "ret: " << ret);
184 RUNNER_TEST(tc07_security_server_get_cookie_pid_weird_input_case)
189 ret = security_server_get_cookie_pid(cookie);
190 RUNNER_ASSERT(ret == SECURITY_SERVER_API_ERROR_INPUT_PARAM);
193 ///////////////////////////
194 /////NOSMACK ENV TESTS/////
195 ///////////////////////////
198 * NOSMACK version of tc06 test.
200 * security_server_check_privilege_by_sockfd at first checks if SMACK exists and then checks if
201 * params are correct. Even with incorrect params we should expect SUCCESS instead of
205 RUNNER_TEST_NOSMACK(tc06_security_server_check_privilege_by_sockfd_weird_input_case_nosmack)
209 const char* object = "telephony_makecall";
210 const char* access_rights = "r";
212 //invalid sockfd case
213 ret = security_server_check_privilege_by_sockfd(sockfd, object, access_rights);
214 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_SUCCESS,
215 "check_privilege_by_sockfd failed. Result: " << ret);
219 char *object2 = NULL;
220 ret = security_server_check_privilege_by_sockfd(sockfd, object2, access_rights);
221 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_SUCCESS,
222 "check_privilege_by_sockfd failed. Result: " << ret);
224 //null access rights case
225 access_rights = NULL;
226 ret = security_server_check_privilege_by_sockfd(sockfd, object, access_rights);
227 RUNNER_ASSERT_MSG(ret == SECURITY_SERVER_API_SUCCESS,
228 "check_privilege_by_sockfd failed. Result: " << ret);