From 66155de48c685b29d96ca95bc1a45078f8f4c681 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Bollo?= Date: Mon, 12 Sep 2016 15:20:06 +0200 Subject: [PATCH] Fix installation of more than one widget MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Using command line tool, it is possible to install more than just one widget. Before this commit, the list of requested permission was not cleaned. Change-Id: Ic9311754f51f12d6231d1f08a55eb4b4aef0c74e Signed-off-by: José Bollo --- src/wgtpkg-install.c | 1 + src/wgtpkg-permissions.c | 10 +++++++++- src/wgtpkg-permissions.h | 1 + 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/wgtpkg-install.c b/src/wgtpkg-install.c index 7d0c318..c4e70e3 100644 --- a/src/wgtpkg-install.c +++ b/src/wgtpkg-install.c @@ -253,6 +253,7 @@ struct wgt_info *install_widget(const char *wgtfile, const char *root, int force if (!ifo) goto error2; + reset_requested_permissions(); desc = wgt_info_desc(ifo); if (check_widget(desc)) goto error3; diff --git a/src/wgtpkg-permissions.c b/src/wgtpkg-permissions.c index 6aed31f..c341054 100644 --- a/src/wgtpkg-permissions.c +++ b/src/wgtpkg-permissions.c @@ -81,7 +81,15 @@ void reset_permissions() { unsigned int i; for (i = 0 ; i < nrpermissions ; i++) - permissions[i].granted = 0; + permissions[i].granted = permissions[i].requested = 0; +} + +/* remove any requested permission */ +void reset_requested_permissions() +{ + unsigned int i; + for (i = 0 ; i < nrpermissions ; i++) + permissions[i].requested = 0; } /* remove any granting */ diff --git a/src/wgtpkg-permissions.h b/src/wgtpkg-permissions.h index 9a99c4c..5c44974 100644 --- a/src/wgtpkg-permissions.h +++ b/src/wgtpkg-permissions.h @@ -18,6 +18,7 @@ extern int is_standard_permission(const char *name); extern void reset_permissions(); +extern void reset_requested_permissions(); extern void crop_permissions(unsigned level); extern int grant_permission_list(const char *list); extern int permission_exists(const char *name); -- 2.16.6