Print out shared app gids correctly
For applications that share resources across users such as
forward-locked applications, print out their group name correctly.
Change-Id: I06ee0b67e4325cfa415ffd7a03e301700399a66d
diff --git a/libc/bionic/stubs.cpp b/libc/bionic/stubs.cpp
index fb1a8e4..1cab7d3 100644
--- a/libc/bionic/stubs.cpp
+++ b/libc/bionic/stubs.cpp
@@ -266,18 +266,19 @@
static void print_app_name_from_appid_userid(const uid_t appid,
const uid_t userid, char* buffer, const int bufferlen) {
- if (appid < AID_ISOLATED_START) {
- if (appid < AID_APP) {
- for (size_t n = 0; n < android_id_count; n++) {
- if (android_ids[n].aid == appid) {
- snprintf(buffer, bufferlen, "u%u_%s", userid, android_ids[n].name);
- return;
- }
+ if (appid >= AID_ISOLATED_START) {
+ snprintf(buffer, bufferlen, "u%u_i%u", userid, appid - AID_ISOLATED_START);
+ } else if (userid == 0 && appid >= AID_SHARED_GID_START) {
+ snprintf(buffer, bufferlen, "all_a%u", appid - AID_SHARED_GID_START);
+ } else if (appid < AID_APP) {
+ for (size_t n = 0; n < android_id_count; n++) {
+ if (android_ids[n].aid == appid) {
+ snprintf(buffer, bufferlen, "u%u_%s", userid, android_ids[n].name);
+ return;
}
}
- snprintf(buffer, bufferlen, "u%u_a%u", userid, appid - AID_APP);
} else {
- snprintf(buffer, bufferlen, "u%u_i%u", userid, appid - AID_ISOLATED_START);
+ snprintf(buffer, bufferlen, "u%u_a%u", userid, appid - AID_APP);
}
}