Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d4299b08 authored by Daniel Rosenberg's avatar Daniel Rosenberg
Browse files

ANDROID: sdcardfs: Fix gid issue



We were already calculating most of these values,
and erroring out because the check was confused by this.
Instead of recalculating, adjust it as needed.

Signed-off-by: default avatarDaniel Rosenberg <drosen@google.com>
Bug: 36160015
Change-Id: I9caf3e2fd32ca2e37ff8ed71b1d392f1761bc9a9
parent aa9ea6f4
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -207,13 +207,13 @@ void fixup_lower_ownership(struct dentry *dentry, const char *name)
		break;
	case PERM_ANDROID_PACKAGE:
		if (info->d_uid != 0)
			gid = multiuser_get_ext_gid(info->userid, info->d_uid);
			gid = multiuser_get_ext_gid(info->d_uid);
		else
			gid = multiuser_get_uid(info->userid, uid);
		break;
	case PERM_ANDROID_PACKAGE_CACHE:
		if (info->d_uid != 0)
			gid = multiuser_get_cache_gid(info->userid, info->d_uid);
			gid = multiuser_get_cache_gid(info->d_uid);
		else
			gid = multiuser_get_uid(info->userid, uid);
		break;
+4 −12
Original line number Diff line number Diff line
@@ -33,20 +33,12 @@ static inline uid_t multiuser_get_uid(userid_t user_id, appid_t app_id)
	return (user_id * AID_USER_OFFSET) + (app_id % AID_USER_OFFSET);
}

static inline gid_t multiuser_get_cache_gid(userid_t user_id, appid_t app_id)
static inline gid_t multiuser_get_cache_gid(uid_t uid)
{
	if (app_id >= AID_APP_START && app_id <= AID_APP_END) {
		return multiuser_get_uid(user_id, (app_id - AID_APP_START) + AID_CACHE_GID_START);
	} else {
		return -1;
	}
	return uid - AID_APP_START + AID_CACHE_GID_START;
}

static inline gid_t multiuser_get_ext_gid(userid_t user_id, appid_t app_id)
static inline gid_t multiuser_get_ext_gid(uid_t uid)
{
	if (app_id >= AID_APP_START && app_id <= AID_APP_END) {
		return multiuser_get_uid(user_id, (app_id - AID_APP_START) + AID_EXT_GID_START);
	} else {
		return -1;
	}
	return uid - AID_APP_START + AID_EXT_GID_START;
}