From c98333b595beb7858a4d3c17cd405dde2f79ce2e Mon Sep 17 00:00:00 2001 From: Jose Bollo Date: Fri, 20 Dec 2019 17:06:40 +0100 Subject: wgtpkg-install: Fix allocation of IDs The framework wasn't correctly attributing application ids because scanning existing applications was broken. Bug-AGL: SPEC-3068 Change-Id: I01aa736c0ea072b5e4141fb5faa1981be81048ce Signed-off-by: Jose Bollo --- src/wgtpkg-install.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/wgtpkg-install.c b/src/wgtpkg-install.c index 9c148c7..33c4299 100644 --- a/src/wgtpkg-install.c +++ b/src/wgtpkg-install.c @@ -53,7 +53,7 @@ static const char* exec_type_strings[] = { }; static const char key_afm_prefix[] = "X-AFM-"; -static const char key_afid[] = "-ID"; +static const char key_afid[] = "ID"; #define HTTP_PORT_BASE 30000 @@ -62,8 +62,8 @@ static const char key_afid[] = "-ID"; #define AFID_IS_VALID(afid) (AFID_MIN <= (afid) && (afid) <= AFID_MAX) #define AFID_COUNT (AFID_MAX - AFID_MIN + 1) #define AFID_ACNT ((AFID_COUNT + 31) >> 5) -#define AFID_ASFT(afid) (((afid) - AFID_MIN) & 31) -#define AFID_AIDX(afid) (((afid) - AFID_MIN) >> 5) +#define AFID_ASFT(afid) (((afid) - AFID_MIN) & 31) +#define AFID_AIDX(afid) (((afid) - AFID_MIN) >> 5) #define AFID_TEST(array,afid) ((((array)[AFID_AIDX(afid)]) >> AFID_ASFT(afid)) & 1) #define AFID_SET(array,afid) (((array)[AFID_AIDX(afid)]) |= (((uint32_t)1) << AFID_ASFT(afid))) @@ -186,6 +186,12 @@ static int get_new_afid() /* allocates the afid */ afid = first_free_afid(afids_array); + if (afid < 0 && errno == EADDRNOTAVAIL) { + /* no more ids, try to rescan */ + memset(afids_array, 0, AFID_ACNT * sizeof(uint32_t)); + if (update_afids(afids_array) >= 0) + afid = first_free_afid(afids_array); + } if (afid >= 0) AFID_SET(afids_array, afid); -- cgit 1.2.3-korg