PKG_CHECK_MODULES(AUL_DEPS REQUIRED aul)
PKG_CHECK_MODULES(CAPI_BASE_COMMON_DEPS REQUIRED capi-base-common)
PKG_CHECK_MODULES(CYNARA_CLIENT_DEPS REQUIRED cynara-client)
+PKG_CHECK_MODULES(CYNARA_CREDS_SELF_DEPS REQUIRED cynara-creds-self)
PKG_CHECK_MODULES(DLOG_DEPS REQUIRED dlog)
PKG_CHECK_MODULES(GLIB_DEPS REQUIRED glib-2.0)
PKG_CHECK_MODULES(GMOCK_DEPS REQUIRED gmock)
BuildRequires: pkgconfig(capi-base-common)
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(cynara-client)
+BuildRequires: pkgconfig(cynara-creds-self)
BuildRequires: pkgconfig(gmock)
Requires(post): /sbin/ldconfig
AUL_DEPS
CAPI_BASE_COMMON_DEPS
CYNARA_CLIENT_DEPS
+ CYNARA_CREDS_SELF_DEPS
DLOG_DEPS
GLIB_DEPS
PKGMGR_DEPS
#include <package-manager.h>
#include <dlog.h>
#include <cynara-client.h>
+#include <cynara-creds-self.h>
#include <aul.h>
#include <aul_svc.h>
#define LOG_TAG "TIZEN_N_APP_MANAGER"
-#define SMACK_LABEL_LEN 255
-
#undef REGULAR_UID_MIN
#define REGULAR_UID_MIN 5000
static int _check_privilege(char *privilege)
{
cynara *p_cynara;
- int fd;
int ret;
- char client[SMACK_LABEL_LEN + 1] = {0,};
+ char *client = NULL;
char uid[10] = {0,};
char *client_session = "";
/* LCOV_EXCL_STOP */
}
- fd = open("/proc/self/attr/current", O_RDONLY);
- if (fd < 0) {
- /* LCOV_EXCL_START */
- LOGE("open [%d] failed!", errno);
+ ret = cynara_creds_self_get_client(CLIENT_METHOD_DEFAULT, &client);
+ if (ret != CYNARA_API_SUCCESS) {
+ LOGE("cynara_creds_self_get_client [%d] failed!", ret);
ret = APP_MANAGER_ERROR_IO_ERROR;
goto out;
- /* LCOV_EXCL_STOP */
}
- ret = read(fd, client, SMACK_LABEL_LEN);
- if (ret < 0) {
- /* LCOV_EXCL_START */
- LOGE("read [%d] failed!", errno);
- close(fd);
- ret = APP_MANAGER_ERROR_IO_ERROR;
- goto out;
- /* LCOV_EXCL_STOP */
- }
- close(fd);
snprintf(uid, 10, "%d", getuid());
ret = cynara_check(p_cynara, client, client_session, uid, privilege);
ret = APP_MANAGER_ERROR_NONE;
out:
+ if (client)
+ free(client);
if (p_cynara)
cynara_finish(p_cynara);
const char* user, const char* privilege) {
return CYNARA_API_ACCESS_ALLOWED;
}));
+ EXPECT_CALL(GetMock<CynaraMock>(), cynara_creds_self_get_client(_, _))
+ .WillOnce(Return(0));
#endif /* TIZEN_FEATURE_SMACK_DISABLE */
EXPECT_CALL(GetMock<PkgmgrInfoMock>(),
pkgmgrinfo_appinfo_foreach_category(_, _, _))
return MOCK_HOOK_P5(CynaraMock, cynara_check, p_cynara, client,
client_session, user, privilege);
}
+
+extern "C" int cynara_creds_self_get_client(cynara_client_creds method,
+ char** client) {
+ return MOCK_HOOK_P2(CynaraMock, cynara_creds_self_get_client, method, client);
+}
#include "app-manager_unittests/mock/module_mock.hh"
+enum cynara_client_creds {
+ CLIENT_METHOD_SMACK,
+ CLIENT_METHOD_PID,
+ CLIENT_METHOD_DEFAULT = 0xFFFF,
+};
+
class CynaraMock : public virtual ModuleMock {
public:
virtual ~CynaraMock() {}
MOCK_METHOD5(cynara_check, int(cynara*, const char*, const char*, const char*,
const char*));
+ MOCK_METHOD2(cynara_creds_self_get_client, int(cynara_client_creds, char**));
};
#endif // APP_MANAGER_UNITTESTS_MOCK_CYNARA_MOCK_HH_