Loading libs/gui/LayerStatePermissions.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -23,31 +23,31 @@ #include <gui/LayerState.h> namespace android { std::unordered_map<std::string, int> LayerStatePermissions::mPermissionMap = { std::vector<std::pair<String16, int>> LayerStatePermissions::mPermissionMap = { // If caller has ACCESS_SURFACE_FLINGER, they automatically get ROTATE_SURFACE_FLINGER // permission, as well {"android.permission.ACCESS_SURFACE_FLINGER", {String16("android.permission.ACCESS_SURFACE_FLINGER"), layer_state_t::Permission::ACCESS_SURFACE_FLINGER | layer_state_t::Permission::ROTATE_SURFACE_FLINGER}, {"android.permission.ROTATE_SURFACE_FLINGER", {String16("android.permission.ROTATE_SURFACE_FLINGER"), layer_state_t::Permission::ROTATE_SURFACE_FLINGER}, {"android.permission.INTERNAL_SYSTEM_WINDOW", {String16("android.permission.INTERNAL_SYSTEM_WINDOW"), layer_state_t::Permission::INTERNAL_SYSTEM_WINDOW}, }; static bool callingThreadHasPermission(const std::string& permission __attribute__((unused)), static bool callingThreadHasPermission(const String16& permission __attribute__((unused)), int pid __attribute__((unused)), int uid __attribute__((unused))) { #ifndef __ANDROID_VNDK__ return uid == AID_GRAPHICS || uid == AID_SYSTEM || PermissionCache::checkPermission(String16(permission.c_str()), pid, uid); PermissionCache::checkPermission(permission, pid, uid); #endif // __ANDROID_VNDK__ return false; } uint32_t LayerStatePermissions::getTransactionPermissions(int pid, int uid) { uint32_t permissions = 0; for (auto [permissionName, permissionVal] : mPermissionMap) { for (const auto& [permissionName, permissionVal] : mPermissionMap) { if (callingThreadHasPermission(permissionName, pid, uid)) { permissions |= permissionVal; } Loading libs/gui/include/gui/LayerStatePermissions.h +3 −4 Original line number Diff line number Diff line Loading @@ -15,15 +15,14 @@ */ #include <stdint.h> #include <string> #include <unordered_map> #include <utils/String16.h> #include <vector> namespace android { class LayerStatePermissions { public: static uint32_t getTransactionPermissions(int pid, int uid); private: static std::unordered_map<std::string, int> mPermissionMap; static std::vector<std::pair<String16, int>> mPermissionMap; }; } // namespace android No newline at end of file Loading
libs/gui/LayerStatePermissions.cpp +7 −7 Original line number Diff line number Diff line Loading @@ -23,31 +23,31 @@ #include <gui/LayerState.h> namespace android { std::unordered_map<std::string, int> LayerStatePermissions::mPermissionMap = { std::vector<std::pair<String16, int>> LayerStatePermissions::mPermissionMap = { // If caller has ACCESS_SURFACE_FLINGER, they automatically get ROTATE_SURFACE_FLINGER // permission, as well {"android.permission.ACCESS_SURFACE_FLINGER", {String16("android.permission.ACCESS_SURFACE_FLINGER"), layer_state_t::Permission::ACCESS_SURFACE_FLINGER | layer_state_t::Permission::ROTATE_SURFACE_FLINGER}, {"android.permission.ROTATE_SURFACE_FLINGER", {String16("android.permission.ROTATE_SURFACE_FLINGER"), layer_state_t::Permission::ROTATE_SURFACE_FLINGER}, {"android.permission.INTERNAL_SYSTEM_WINDOW", {String16("android.permission.INTERNAL_SYSTEM_WINDOW"), layer_state_t::Permission::INTERNAL_SYSTEM_WINDOW}, }; static bool callingThreadHasPermission(const std::string& permission __attribute__((unused)), static bool callingThreadHasPermission(const String16& permission __attribute__((unused)), int pid __attribute__((unused)), int uid __attribute__((unused))) { #ifndef __ANDROID_VNDK__ return uid == AID_GRAPHICS || uid == AID_SYSTEM || PermissionCache::checkPermission(String16(permission.c_str()), pid, uid); PermissionCache::checkPermission(permission, pid, uid); #endif // __ANDROID_VNDK__ return false; } uint32_t LayerStatePermissions::getTransactionPermissions(int pid, int uid) { uint32_t permissions = 0; for (auto [permissionName, permissionVal] : mPermissionMap) { for (const auto& [permissionName, permissionVal] : mPermissionMap) { if (callingThreadHasPermission(permissionName, pid, uid)) { permissions |= permissionVal; } Loading
libs/gui/include/gui/LayerStatePermissions.h +3 −4 Original line number Diff line number Diff line Loading @@ -15,15 +15,14 @@ */ #include <stdint.h> #include <string> #include <unordered_map> #include <utils/String16.h> #include <vector> namespace android { class LayerStatePermissions { public: static uint32_t getTransactionPermissions(int pid, int uid); private: static std::unordered_map<std::string, int> mPermissionMap; static std::vector<std::pair<String16, int>> mPermissionMap; }; } // namespace android No newline at end of file