From 1a19052d22ef1cc8dc5cc4ccada4cfa649735f78 Mon Sep 17 00:00:00 2001 From: Baptiste DURAND Date: Fri, 11 Apr 2014 14:34:15 +0200 Subject: [PATCH] Add Multi User Features Change-Id: Id34dcc5633b6378bbd526ad4647825cb524f3d20 Signed-off-by: Baptiste DURAND Signed-off-by: Sabera Djelti (sdi2) --- tool/CMakeLists.txt | 5 +---- tool/pkg_cmd.c | 1 - tool/pkg_fota.c | 37 ++++++++++++++++++++++++------------- tool/pkg_initdb.c | 9 +++++++-- 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/tool/CMakeLists.txt b/tool/CMakeLists.txt index 724b72d..1ac49d6 100755 --- a/tool/CMakeLists.txt +++ b/tool/CMakeLists.txt @@ -36,13 +36,10 @@ add_executable(pkg_getsize pkg_getsize.c) target_link_libraries(pkg_getsize pkgmgr-client pkgmgr_installer ${pkgs_test_LDFLAGS}) INSTALL(TARGETS pkg_getsize DESTINATION bin) - -add_executable(pkg_initdb - pkg_initdb.c) +add_executable(pkg_initdb pkg_initdb.c) target_link_libraries(pkg_initdb ${pkgs_test_LDFLAGS}) INSTALL(TARGETS pkg_initdb DESTINATION bin) - add_executable(pkgmgr-install pkgmgr-install.c) target_link_libraries(pkgmgr-install pkgmgr-client pkgmgr-info ${toolpkgs_LDFLAGS}) install(TARGETS pkgmgr-install DESTINATION bin) diff --git a/tool/pkg_cmd.c b/tool/pkg_cmd.c index 3a10052..56d0eca 100755 --- a/tool/pkg_cmd.c +++ b/tool/pkg_cmd.c @@ -972,7 +972,6 @@ int main(int argc, char *argv[]) if (!__is_authorized()) { printf("You are not an authorized user!\n"); - return PKGCMD_ERR_FATAL_ERROR; } if (argc == 1) diff --git a/tool/pkg_fota.c b/tool/pkg_fota.c index 86c270b..daf0817 100644 --- a/tool/pkg_fota.c +++ b/tool/pkg_fota.c @@ -41,12 +41,13 @@ #define OPT_MANIFEST_DIRECTORY tzplatform_getenv(TZ_SYS_RW_PACKAGES) #define USR_MANIFEST_DIRECTORY tzplatform_getenv(TZ_SYS_RO_PACKAGES) #define PACKAGE_INFO_DB_FILE tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_parser.db") +#define PACKAGE_INFO_DB_FILE_JOURNAL tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_parser.db-journal") #define PKG_PARSER_DB_FILE tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_parser.db") #define PKG_PARSER_DB_FILE_JOURNAL tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_parser.db-journal") #define PKG_CERT_DB_FILE tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_cert.db") #define PKG_CERT_DB_FILE_JOURNAL tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_cert.db-journal") -#define PKG_INFO_DB_LABEL "pkgmgr::db" +#define PKG_INFO_DB_LABEL "System" #ifdef _E #undef _E @@ -220,28 +221,35 @@ static int pkg_fota_change_perm(const char *db_file) static int pkg_fota_give_smack() { int ret = 0; + char *label; + + label = getUserDBLabel(); - const char *argv_parser[] = { "/usr/bin/chsmack", "-a", PKG_INFO_DB_LABEL, PKG_PARSER_DB_FILE, NULL }; + const char *argv_parser[] = { "/usr/bin/chsmack", "-a", label, getUserPkgParserDBPath(), NULL }; ret = pkg_fota_xsystem(argv_parser); if (ret == -1) { + free(label); _E("exec : argv_parser fail"); return -1; } - const char *argv_parserjn[] = { "/usr/bin/chsmack", "-a", PKG_INFO_DB_LABEL, PKG_PARSER_DB_FILE_JOURNAL, NULL }; + const char *argv_parserjn[] = { "/usr/bin/chsmack", "-a", label, getUserPkgParserJournalDBPath(), NULL }; ret = pkg_fota_xsystem(argv_parserjn); if (ret == -1) { + free(label); _E("exec : argv_parserjn fail"); return -1; } - const char *argv_cert[] = { "/usr/bin/chsmack", "-a", PKG_INFO_DB_LABEL, PKG_CERT_DB_FILE, NULL }; + const char *argv_cert[] = { "/usr/bin/chsmack", "-a", label, getUserPkgCertDBPath(), NULL }; ret = pkg_fota_xsystem(argv_cert); if (ret == -1) { + free(label); _E("exec : argv_cert fail"); return -1; } - const char *argv_certjn[] = { "/usr/bin/chsmack", "-a", PKG_INFO_DB_LABEL, PKG_CERT_DB_FILE_JOURNAL, NULL }; + const char *argv_certjn[] = { "/usr/bin/chsmack", "-a", label, getUserPkgCertJournalDBPath(), NULL }; ret = pkg_fota_xsystem(argv_certjn); if (ret == -1) { + free(label); _E("exec : argv_certjn fail"); return -1; } @@ -260,14 +268,17 @@ static int __is_authorized() return 0; } - int main(int argc, char *argv[]) { int ret; if (!__is_authorized()) { _E("You are not an authorized user!\n"); - return -1; + } else { + const char *argv_rm[] = { "/bin/rm", getUserPkgParserDBPath(), NULL }; + pkg_fota_xsystem(argv_rm); + const char *argv_rmjn[] = { "/bin/rm", getUserPkgParserJournalDBPath(), NULL }; + pkg_fota_xsystem(argv_rmjn); } /* This is for AIL initializing */ @@ -290,18 +301,18 @@ int main(int argc, char *argv[]) _E("cannot load usr manifest directory."); } - ret = pkg_fota_change_perm(PACKAGE_INFO_DB_FILE); + ret = pkg_fota_change_perm(getUserPkgParserDBPath()); if (ret == -1) { _E("cannot chown."); return -1; } - ret = pkg_fota_give_smack(); - if (ret == -1) { - _E("cannot pkg_fota_give_smack."); - return -1; + ret = pkg_fota_give_smack(); + if (ret == -1) { + _E("cannot pkg_fota_give_smack."); + return -1; + } } - return 0; } diff --git a/tool/pkg_initdb.c b/tool/pkg_initdb.c index aec8faa..8f77297 100755 --- a/tool/pkg_initdb.c +++ b/tool/pkg_initdb.c @@ -42,12 +42,13 @@ #define OPT_MANIFEST_DIRECTORY tzplatform_getenv(TZ_SYS_RW_PACKAGES) #define USR_MANIFEST_DIRECTORY tzplatform_getenv(TZ_SYS_RO_PACKAGES) #define PACKAGE_INFO_DB_FILE tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_parser.db") +#define PACKAGE_INFO_DB_FILE_JOURNAL tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_parser.db-journal") #define PKG_PARSER_DB_FILE tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_parser.db") #define PKG_PARSER_DB_FILE_JOURNAL tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_parser.db-journal") #define PKG_CERT_DB_FILE tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_cert.db") #define PKG_CERT_DB_FILE_JOURNAL tzplatform_mkpath(TZ_SYS_DB, ".pkgmgr_cert.db-journal") -#define PKG_INFO_DB_LABEL "User" +#define PKG_INFO_DB_LABEL "System" #ifdef _E #undef _E @@ -238,6 +239,11 @@ int main(int argc, char *argv[]) if (!__is_authorized()) { _E("You are not an authorized user!\n"); return -1; + } else { + const char *argv_rm[] = { "/bin/rm", PACKAGE_INFO_DB_FILE, NULL }; + initdb_xsystem(argv_rm); + const char *argv_rmjn[] = { "/bin/rm", PACKAGE_INFO_DB_FILE_JOURNAL, NULL }; + initdb_xsystem(argv_rmjn); } /* This is for AIL initializing */ @@ -265,7 +271,6 @@ int main(int argc, char *argv[]) _E("cannot chown."); return -1; } - const char *argv_parser[] = { "/usr/bin/chsmack", "-a", PKG_INFO_DB_LABEL, PKG_PARSER_DB_FILE, NULL }; initdb_xsystem(argv_parser); const char *argv_parserjn[] = { "/usr/bin/chsmack", "-a", PKG_INFO_DB_LABEL, PKG_PARSER_DB_FILE_JOURNAL, NULL }; -- 2.7.4