return SECURITY_MANAGER_SUCCESS;
case SECURITY_MANAGER_API_ERROR_AUTHENTICATION_FAILED:
return SECURITY_MANAGER_ERROR_AUTHENTICATION_FAILED;
+ case SECURITY_MANAGER_API_ERROR_INPUT_PARAM:
+ return SECURITY_MANAGER_ERROR_INPUT_PARAM;
default:
return SECURITY_MANAGER_ERROR_UNKNOWN;
}
<< ", uidstr " << uidstr << ", generated smack label: " << smackLabel);
PrivilegeDb::getInstance().BeginTransaction();
+
+ std::string pkg;
+ bool ret = PrivilegeDb::getInstance().GetAppPkgId(req.appId, pkg);
+ if (ret == true && pkg != req.pkgId) {
+ LogError("Application already installed with different package id");
+ PrivilegeDb::getInstance().RollbackTransaction();
+ return SECURITY_MANAGER_API_ERROR_INPUT_PARAM;
+ }
PrivilegeDb::getInstance().GetPkgPrivileges(req.pkgId, uid, oldPkgPrivileges);
PrivilegeDb::getInstance().AddApplication(req.appId, req.pkgId, uid, pkgIdIsNew);
PrivilegeDb::getInstance().UpdateAppPrivileges(req.appId, uid, req.privileges);