summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZofia Abramowska <z.abramowska@samsung.com>2016-09-07 13:18:40 +0200
committerZofia Abramowska <z.abramowska@samsung.com>2016-09-21 12:55:19 +0200
commit60bba3ef8e016d10c5bee4c90a47f481c6e25acc (patch)
tree2fa251f5cfd63be9a4b1a4ace3bf9c56a947f7ea
parent22166d42563a83b33cbae44efee2c4d48a2013e9 (diff)
downloadsecurity-manager-60bba3ef8e016d10c5bee4c90a47f481c6e25acc.tar.gz
security-manager-60bba3ef8e016d10c5bee4c90a47f481c6e25acc.tar.bz2
security-manager-60bba3ef8e016d10c5bee4c90a47f481c6e25acc.zip
Fetch is_hybrid flag from db
Change-Id: Ie77b94b551bedb4eff569379f0c0726578147d7f
-rw-r--r--src/common/include/privilege_db.h10
-rw-r--r--src/common/privilege_db.cpp16
2 files changed, 26 insertions, 0 deletions
diff --git a/src/common/include/privilege_db.h b/src/common/include/privilege_db.h
index 8e7f8018..9d1a6db5 100644
--- a/src/common/include/privilege_db.h
+++ b/src/common/include/privilege_db.h
@@ -75,6 +75,7 @@ enum class StmtType {
EGetSharedROPackages,
ESetPackageSharedRO,
EIsPackageSharedRO,
+ EIsPackageHybrid,
};
class PrivilegeDb {
@@ -133,6 +134,7 @@ private:
{ StmtType::EGetSharedROPackages, "SELECT DISTINCT name FROM pkg WHERE shared_ro = 1;"},
{ StmtType::ESetPackageSharedRO, "UPDATE pkg SET shared_ro=1 WHERE name=?"},
{ StmtType::EIsPackageSharedRO, "SELECT shared_ro FROM pkg WHERE name=?"},
+ { StmtType::EIsPackageHybrid, "SELECT is_hybrid FROM pkg WHERE name=?"},
};
/**
@@ -499,6 +501,14 @@ public:
* @exception DB::SqlConnection::Exception::ConstraintError on constraint violation
*/
bool IsPackageSharedRO(const std::string& pkgName);
+
+ /**
+ * Check whether package has is_hybrid field set to 1 in db
+ *
+ * @exception DB::SqlConnection::Exception::InternalError on internal error
+ * @exception DB::SqlConnection::Exception::ConstraintError on constraint violation
+ */
+ bool IsPackageHybrid(const std::string& pkgName);
};
} //namespace SecurityManager
diff --git a/src/common/privilege_db.cpp b/src/common/privilege_db.cpp
index 75763459..a11b3e3f 100644
--- a/src/common/privilege_db.cpp
+++ b/src/common/privilege_db.cpp
@@ -554,4 +554,20 @@ bool PrivilegeDb::IsPackageSharedRO(const std::string &pkgName)
});
}
+bool PrivilegeDb::IsPackageHybrid(const std::string& pkgName)
+{
+ return try_catch<bool>([&]() -> bool {
+ auto command = getStatement(StmtType::EIsPackageHybrid);
+ command->BindString(1, pkgName);
+ int isHybrid = 0;
+
+ if (command->Step())
+ isHybrid = command->GetColumnInteger(0);
+
+ LogDebug("Package " << pkgName << "has shared_ro set to " << isHybrid);
+
+ return (isHybrid > 0);
+ });
+}
+
} //namespace SecurityManager