Allow version compatibility change during application upgrade 97/118697/1
authorRafal Krypa <r.krypa@samsung.com>
Mon, 13 Mar 2017 15:28:28 +0000 (16:28 +0100)
committerRafal Krypa <r.krypa@samsung.com>
Mon, 13 Mar 2017 15:49:09 +0000 (16:49 +0100)
Security-manager should permit app installation request for cases where
the same app is already installed, but platform version for the app has
changed.

Change-Id: Ia8ffdc20c084b7ade18e3deeed6d17b081149a70
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
db/db.sql
db/updates/update-db-to-v10.sql [new file with mode: 0644]

index f22e451..9f264b3 100644 (file)
--- a/db/db.sql
+++ b/db/db.sql
@@ -4,7 +4,7 @@ PRAGMA auto_vacuum = NONE;
 
 BEGIN EXCLUSIVE TRANSACTION;
 
-PRAGMA user_version = 9;
+PRAGMA user_version = 10;
 
 CREATE TABLE IF NOT EXISTS pkg (
 pkg_id INTEGER PRIMARY KEY,
@@ -88,11 +88,6 @@ BEGIN
                       WHERE app_name=NEW.app_name
                       AND pkg_name!=NEW.pkg_name);
 
-    SELECT RAISE(ABORT, 'Application already installed with different version')
-        WHERE EXISTS (SELECT 1 FROM user_app_pkg_view
-                      WHERE app_name=NEW.app_name
-                      AND version!=NEW.version);
-
     SELECT RAISE(ABORT, 'Another application from this package is already installed with different author')
         WHERE EXISTS (SELECT 1 FROM user_app_pkg_view
                       WHERE pkg_name=NEW.pkg_name
@@ -115,6 +110,9 @@ BEGIN
     UPDATE pkg SET author_id=(SELECT author_id FROM author WHERE name=NEW.author_name)
         WHERE name=NEW.pkg_name AND author_id IS NULL;
 
+    -- If pkg have already existed with different version do update it
+    UPDATE app SET version=NEW.version WHERE app_id=NEW.app_id;
+
     INSERT OR IGNORE INTO app (pkg_id, name, version) VALUES (
         (SELECT pkg_id FROM pkg WHERE name=NEW.pkg_name),
         NEW.app_name,
diff --git a/db/updates/update-db-to-v10.sql b/db/updates/update-db-to-v10.sql
new file mode 100644 (file)
index 0000000..c90e88e
--- /dev/null
@@ -0,0 +1,5 @@
+BEGIN EXCLUSIVE TRANSACTION;
+
+PRAGMA user_version = 10;
+
+COMMIT TRANSACTION;