//put data into buffer
Serialization::Serialize(send, (int)SecurityModuleCall::APP_UNINSTALL,
- p_req->appName);
+ p_req->appName,
+ p_req->pkgName,
+ p_req->privileges,
+ p_req->pkgPaths,
+ p_req->uid,
+ p_req->tizenVersion,
+ p_req->authorName,
+ p_req->installationType);
//send buffer to server
int retval = sendToServer(SERVICE_SOCKET, send.Pop(), recv);
uid_t globalUid = getGlobalUserId();
if (installationType == SM_APP_INSTALL_NONE)
- installationType = (uid == 0) ? SM_APP_INSTALL_GLOBAL : SM_APP_INSTALL_LOCAL;
+ installationType = ((uid == 0) || (uid == globalUid)) ? SM_APP_INSTALL_GLOBAL :
+ SM_APP_INSTALL_LOCAL;
if ((installationType == SM_APP_INSTALL_GLOBAL)
|| (installationType == SM_APP_INSTALL_PRELOADED))
uid = globalUid;
LogError("Caller is not permitted to manage applications for other users");
return false;
}
+ if (uid == getGlobalUserId()) {
+ LogError("Request local installation for global uid=" << uid);
+ return false;
+ }
} else {
if (!authenticate(creds, Config::PRIVILEGE_APPINST_ADMIN)) {
LogError("Caller is not permitted to manage global applications");
{
app_inst_req req;
- req.uid = creds.uid;
Deserialization::Deserialize(buffer, req.appName);
+ Deserialization::Deserialize(buffer, req.pkgName);
+ Deserialization::Deserialize(buffer, req.privileges);
+ Deserialization::Deserialize(buffer, req.pkgPaths);
+ Deserialization::Deserialize(buffer, req.uid);
+ Deserialization::Deserialize(buffer, req.tizenVersion);
+ Deserialization::Deserialize(buffer, req.authorName);
+ Deserialization::Deserialize(buffer, req.installationType);
Serialization::Serialize(send, serviceImpl.appUninstall(creds, std::move(req)));
}