Loading libcutils/abi-dumps/arm64/source-based/libcutils.so.lsdump +64 −0 Original line number Diff line number Diff line Loading @@ -289,6 +289,9 @@ { "name" : "fs_write_atomic_int" }, { "name" : "get_fs_config" }, { "name" : "hashmapCreate" }, Loading Loading @@ -1273,6 +1276,27 @@ "return_type" : "_ZTIi", "source_file" : "system/core/libcutils/include/cutils/fs.h" }, { "function_name" : "get_fs_config", "linker_set_key" : "get_fs_config", "parameters" : [ { "referenced_type" : "_ZTIPKc" }, { "referenced_type" : "_ZTIb" }, { "referenced_type" : "_ZTIPKc" }, { "referenced_type" : "_ZTIP9fs_config" } ], "return_type" : "_ZTIb", "source_file" : "system/core/libcutils/include/private/fs_config.h" }, { "function_name" : "hashmapCreate", "linker_set_key" : "hashmapCreate", Loading Loading @@ -2390,6 +2414,15 @@ "size" : 8, "source_file" : "system/core/libcutils/include/cutils/hashmap.h" }, { "alignment" : 8, "linker_set_key" : "_ZTIP9fs_config", "name" : "fs_config *", "referenced_type" : "_ZTI9fs_config", "self_type" : "_ZTIP9fs_config", "size" : 8, "source_file" : "system/core/libcutils/include/private/fs_config.h" }, { "alignment" : 8, "linker_set_key" : "_ZTIP9str_parms", Loading Loading @@ -2684,6 +2717,37 @@ "self_type" : "_ZTI5cnode", "size" : 40, "source_file" : "system/core/libcutils/include/cutils/config_utils.h" }, { "alignment" : 8, "fields" : [ { "field_name" : "uid", "referenced_type" : "_ZTIj" }, { "field_name" : "gid", "field_offset" : 32, "referenced_type" : "_ZTIj" }, { "field_name" : "mode", "field_offset" : 64, "referenced_type" : "_ZTIj" }, { "field_name" : "capabilities", "field_offset" : 128, "referenced_type" : "_ZTIm" } ], "linker_set_key" : "_ZTI9fs_config", "name" : "fs_config", "referenced_type" : "_ZTI9fs_config", "self_type" : "_ZTI9fs_config", "size" : 24, "source_file" : "system/core/libcutils/include/private/fs_config.h" } ], "rvalue_reference_types" : [] Loading libcutils/abi-dumps/arm_arm64/source-based/libcutils.so.lsdump +64 −0 Original line number Diff line number Diff line Loading @@ -299,6 +299,9 @@ { "name" : "fs_write_atomic_int" }, { "name" : "get_fs_config" }, { "name" : "hashmapCreate" }, Loading Loading @@ -1283,6 +1286,27 @@ "return_type" : "_ZTIi", "source_file" : "system/core/libcutils/include/cutils/fs.h" }, { "function_name" : "get_fs_config", "linker_set_key" : "get_fs_config", "parameters" : [ { "referenced_type" : "_ZTIPKc" }, { "referenced_type" : "_ZTIb" }, { "referenced_type" : "_ZTIPKc" }, { "referenced_type" : "_ZTIP9fs_config" } ], "return_type" : "_ZTIb", "source_file" : "system/core/libcutils/include/private/fs_config.h" }, { "function_name" : "hashmapCreate", "linker_set_key" : "hashmapCreate", Loading Loading @@ -2400,6 +2424,15 @@ "size" : 4, "source_file" : "system/core/libcutils/include/cutils/hashmap.h" }, { "alignment" : 4, "linker_set_key" : "_ZTIP9fs_config", "name" : "fs_config *", "referenced_type" : "_ZTI9fs_config", "self_type" : "_ZTIP9fs_config", "size" : 4, "source_file" : "system/core/libcutils/include/private/fs_config.h" }, { "alignment" : 4, "linker_set_key" : "_ZTIP9str_parms", Loading Loading @@ -2694,6 +2727,37 @@ "self_type" : "_ZTI5cnode", "size" : 20, "source_file" : "system/core/libcutils/include/cutils/config_utils.h" }, { "alignment" : 8, "fields" : [ { "field_name" : "uid", "referenced_type" : "_ZTIj" }, { "field_name" : "gid", "field_offset" : 32, "referenced_type" : "_ZTIj" }, { "field_name" : "mode", "field_offset" : 64, "referenced_type" : "_ZTIt" }, { "field_name" : "capabilities", "field_offset" : 128, "referenced_type" : "_ZTIy" } ], "linker_set_key" : "_ZTI9fs_config", "name" : "fs_config", "referenced_type" : "_ZTI9fs_config", "self_type" : "_ZTI9fs_config", "size" : 24, "source_file" : "system/core/libcutils/include/private/fs_config.h" } ], "rvalue_reference_types" : [] Loading libcutils/fs_config.cpp +31 −14 Original line number Diff line number Diff line Loading @@ -91,7 +91,7 @@ static const struct fs_path_config android_dirs[] = { { 00751, AID_ROOT, AID_SHELL, 0, "vendor/bin" }, { 00751, AID_ROOT, AID_SHELL, 0, "vendor/apex/*/bin" }, { 00755, AID_ROOT, AID_SHELL, 0, "vendor" }, { 00755, AID_ROOT, AID_ROOT, 0, 0 }, {}, // clang-format on }; #ifndef __ANDROID_VNDK__ Loading Loading @@ -228,7 +228,7 @@ static const struct fs_path_config android_files[] = { { 00755, AID_ROOT, AID_SHELL, 0, "vendor/bin/*" }, { 00755, AID_ROOT, AID_SHELL, 0, "vendor/apex/*bin/*" }, { 00755, AID_ROOT, AID_SHELL, 0, "vendor/xbin/*" }, { 00644, AID_ROOT, AID_ROOT, 0, 0 }, {}, // clang-format on }; #ifndef __ANDROID_VNDK__ Loading Loading @@ -318,8 +318,8 @@ static bool fs_config_cmp(bool dir, const char* prefix, size_t len, const char* auto __for_testing_only__fs_config_cmp = fs_config_cmp; #endif void fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid, unsigned* gid, unsigned* mode, uint64_t* capabilities) { bool get_fs_config(const char* path, bool dir, const char* target_out_path, struct fs_config* fs_conf) { const struct fs_path_config* pc; size_t which, plen; Loading Loading @@ -362,11 +362,11 @@ void fs_config(const char* path, int dir, const char* target_out_path, unsigned* if (fs_config_cmp(dir, prefix, len, path, plen)) { free(prefix); close(fd); *uid = header.uid; *gid = header.gid; *mode = (*mode & (~07777)) | header.mode; *capabilities = header.capabilities; return; fs_conf->uid = header.uid; fs_conf->gid = header.gid; fs_conf->mode = header.mode; fs_conf->capabilities = header.capabilities; return true; } free(prefix); } Loading @@ -375,11 +375,28 @@ void fs_config(const char* path, int dir, const char* target_out_path, unsigned* for (pc = dir ? android_dirs : android_files; pc->prefix; pc++) { if (fs_config_cmp(dir, pc->prefix, strlen(pc->prefix), path, plen)) { break; fs_conf->uid = pc->uid; fs_conf->gid = pc->gid; fs_conf->mode = pc->mode; fs_conf->capabilities = pc->capabilities; return true; } } return false; } void fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid, unsigned* gid, unsigned* mode, uint64_t* capabilities) { struct fs_config conf; if (get_fs_config(path, dir, target_out_path, &conf)) { *uid = conf.uid; *gid = conf.gid; *mode = (*mode & S_IFMT) | conf.mode; *capabilities = conf.capabilities; } else { *uid = AID_ROOT; *gid = AID_ROOT; *mode = (*mode & S_IFMT) | (dir ? 0755 : 0644); *capabilities = 0; } *uid = pc->uid; *gid = pc->gid; *mode = (*mode & (~07777)) | pc->mode; *capabilities = pc->capabilities; } libcutils/include/private/fs_config.h +23 −10 Original line number Diff line number Diff line Loading @@ -21,8 +21,11 @@ #pragma once #include <fcntl.h> #include <stdbool.h> #include <stdint.h> #include <sys/cdefs.h> #include <unistd.h> #include <linux/capability.h> Loading @@ -30,17 +33,27 @@ __BEGIN_DECLS /* * Used in: * build/tools/fs_config/fs_config.c * build/tools/fs_get_stats/fs_get_stats.c * system/extras/ext4_utils/make_ext4fs_main.c * external/squashfs-tools/squashfs-tools/android.c * system/core/cpio/mkbootfs.c * system/core/adb/file_sync_service.cpp * system/extras/ext4_utils/canned_fs_config.c */ /* This API is deprecated. New users should call get_fs_config. */ void fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid, unsigned* gid, unsigned* mode, uint64_t* capabilities); struct fs_config { uid_t uid; gid_t gid; mode_t mode; uint64_t capabilities; }; /* * If a file system configuration was found for the specified path, store it to *conf. * Returns whether a file system configuration was found. * * dir: Whether path refers to a directory. * target_out_path: Path to the base directory to read the file system configuration from, or a null * pointer to use the root directory as the base. Host code should pass $ANDROID_PRODUCT_OUT or * equivalent, and device code should pass a null pointer. */ bool get_fs_config(const char* path, bool dir, const char* target_out_path, struct fs_config* conf); __END_DECLS Loading
libcutils/abi-dumps/arm64/source-based/libcutils.so.lsdump +64 −0 Original line number Diff line number Diff line Loading @@ -289,6 +289,9 @@ { "name" : "fs_write_atomic_int" }, { "name" : "get_fs_config" }, { "name" : "hashmapCreate" }, Loading Loading @@ -1273,6 +1276,27 @@ "return_type" : "_ZTIi", "source_file" : "system/core/libcutils/include/cutils/fs.h" }, { "function_name" : "get_fs_config", "linker_set_key" : "get_fs_config", "parameters" : [ { "referenced_type" : "_ZTIPKc" }, { "referenced_type" : "_ZTIb" }, { "referenced_type" : "_ZTIPKc" }, { "referenced_type" : "_ZTIP9fs_config" } ], "return_type" : "_ZTIb", "source_file" : "system/core/libcutils/include/private/fs_config.h" }, { "function_name" : "hashmapCreate", "linker_set_key" : "hashmapCreate", Loading Loading @@ -2390,6 +2414,15 @@ "size" : 8, "source_file" : "system/core/libcutils/include/cutils/hashmap.h" }, { "alignment" : 8, "linker_set_key" : "_ZTIP9fs_config", "name" : "fs_config *", "referenced_type" : "_ZTI9fs_config", "self_type" : "_ZTIP9fs_config", "size" : 8, "source_file" : "system/core/libcutils/include/private/fs_config.h" }, { "alignment" : 8, "linker_set_key" : "_ZTIP9str_parms", Loading Loading @@ -2684,6 +2717,37 @@ "self_type" : "_ZTI5cnode", "size" : 40, "source_file" : "system/core/libcutils/include/cutils/config_utils.h" }, { "alignment" : 8, "fields" : [ { "field_name" : "uid", "referenced_type" : "_ZTIj" }, { "field_name" : "gid", "field_offset" : 32, "referenced_type" : "_ZTIj" }, { "field_name" : "mode", "field_offset" : 64, "referenced_type" : "_ZTIj" }, { "field_name" : "capabilities", "field_offset" : 128, "referenced_type" : "_ZTIm" } ], "linker_set_key" : "_ZTI9fs_config", "name" : "fs_config", "referenced_type" : "_ZTI9fs_config", "self_type" : "_ZTI9fs_config", "size" : 24, "source_file" : "system/core/libcutils/include/private/fs_config.h" } ], "rvalue_reference_types" : [] Loading
libcutils/abi-dumps/arm_arm64/source-based/libcutils.so.lsdump +64 −0 Original line number Diff line number Diff line Loading @@ -299,6 +299,9 @@ { "name" : "fs_write_atomic_int" }, { "name" : "get_fs_config" }, { "name" : "hashmapCreate" }, Loading Loading @@ -1283,6 +1286,27 @@ "return_type" : "_ZTIi", "source_file" : "system/core/libcutils/include/cutils/fs.h" }, { "function_name" : "get_fs_config", "linker_set_key" : "get_fs_config", "parameters" : [ { "referenced_type" : "_ZTIPKc" }, { "referenced_type" : "_ZTIb" }, { "referenced_type" : "_ZTIPKc" }, { "referenced_type" : "_ZTIP9fs_config" } ], "return_type" : "_ZTIb", "source_file" : "system/core/libcutils/include/private/fs_config.h" }, { "function_name" : "hashmapCreate", "linker_set_key" : "hashmapCreate", Loading Loading @@ -2400,6 +2424,15 @@ "size" : 4, "source_file" : "system/core/libcutils/include/cutils/hashmap.h" }, { "alignment" : 4, "linker_set_key" : "_ZTIP9fs_config", "name" : "fs_config *", "referenced_type" : "_ZTI9fs_config", "self_type" : "_ZTIP9fs_config", "size" : 4, "source_file" : "system/core/libcutils/include/private/fs_config.h" }, { "alignment" : 4, "linker_set_key" : "_ZTIP9str_parms", Loading Loading @@ -2694,6 +2727,37 @@ "self_type" : "_ZTI5cnode", "size" : 20, "source_file" : "system/core/libcutils/include/cutils/config_utils.h" }, { "alignment" : 8, "fields" : [ { "field_name" : "uid", "referenced_type" : "_ZTIj" }, { "field_name" : "gid", "field_offset" : 32, "referenced_type" : "_ZTIj" }, { "field_name" : "mode", "field_offset" : 64, "referenced_type" : "_ZTIt" }, { "field_name" : "capabilities", "field_offset" : 128, "referenced_type" : "_ZTIy" } ], "linker_set_key" : "_ZTI9fs_config", "name" : "fs_config", "referenced_type" : "_ZTI9fs_config", "self_type" : "_ZTI9fs_config", "size" : 24, "source_file" : "system/core/libcutils/include/private/fs_config.h" } ], "rvalue_reference_types" : [] Loading
libcutils/fs_config.cpp +31 −14 Original line number Diff line number Diff line Loading @@ -91,7 +91,7 @@ static const struct fs_path_config android_dirs[] = { { 00751, AID_ROOT, AID_SHELL, 0, "vendor/bin" }, { 00751, AID_ROOT, AID_SHELL, 0, "vendor/apex/*/bin" }, { 00755, AID_ROOT, AID_SHELL, 0, "vendor" }, { 00755, AID_ROOT, AID_ROOT, 0, 0 }, {}, // clang-format on }; #ifndef __ANDROID_VNDK__ Loading Loading @@ -228,7 +228,7 @@ static const struct fs_path_config android_files[] = { { 00755, AID_ROOT, AID_SHELL, 0, "vendor/bin/*" }, { 00755, AID_ROOT, AID_SHELL, 0, "vendor/apex/*bin/*" }, { 00755, AID_ROOT, AID_SHELL, 0, "vendor/xbin/*" }, { 00644, AID_ROOT, AID_ROOT, 0, 0 }, {}, // clang-format on }; #ifndef __ANDROID_VNDK__ Loading Loading @@ -318,8 +318,8 @@ static bool fs_config_cmp(bool dir, const char* prefix, size_t len, const char* auto __for_testing_only__fs_config_cmp = fs_config_cmp; #endif void fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid, unsigned* gid, unsigned* mode, uint64_t* capabilities) { bool get_fs_config(const char* path, bool dir, const char* target_out_path, struct fs_config* fs_conf) { const struct fs_path_config* pc; size_t which, plen; Loading Loading @@ -362,11 +362,11 @@ void fs_config(const char* path, int dir, const char* target_out_path, unsigned* if (fs_config_cmp(dir, prefix, len, path, plen)) { free(prefix); close(fd); *uid = header.uid; *gid = header.gid; *mode = (*mode & (~07777)) | header.mode; *capabilities = header.capabilities; return; fs_conf->uid = header.uid; fs_conf->gid = header.gid; fs_conf->mode = header.mode; fs_conf->capabilities = header.capabilities; return true; } free(prefix); } Loading @@ -375,11 +375,28 @@ void fs_config(const char* path, int dir, const char* target_out_path, unsigned* for (pc = dir ? android_dirs : android_files; pc->prefix; pc++) { if (fs_config_cmp(dir, pc->prefix, strlen(pc->prefix), path, plen)) { break; fs_conf->uid = pc->uid; fs_conf->gid = pc->gid; fs_conf->mode = pc->mode; fs_conf->capabilities = pc->capabilities; return true; } } return false; } void fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid, unsigned* gid, unsigned* mode, uint64_t* capabilities) { struct fs_config conf; if (get_fs_config(path, dir, target_out_path, &conf)) { *uid = conf.uid; *gid = conf.gid; *mode = (*mode & S_IFMT) | conf.mode; *capabilities = conf.capabilities; } else { *uid = AID_ROOT; *gid = AID_ROOT; *mode = (*mode & S_IFMT) | (dir ? 0755 : 0644); *capabilities = 0; } *uid = pc->uid; *gid = pc->gid; *mode = (*mode & (~07777)) | pc->mode; *capabilities = pc->capabilities; }
libcutils/include/private/fs_config.h +23 −10 Original line number Diff line number Diff line Loading @@ -21,8 +21,11 @@ #pragma once #include <fcntl.h> #include <stdbool.h> #include <stdint.h> #include <sys/cdefs.h> #include <unistd.h> #include <linux/capability.h> Loading @@ -30,17 +33,27 @@ __BEGIN_DECLS /* * Used in: * build/tools/fs_config/fs_config.c * build/tools/fs_get_stats/fs_get_stats.c * system/extras/ext4_utils/make_ext4fs_main.c * external/squashfs-tools/squashfs-tools/android.c * system/core/cpio/mkbootfs.c * system/core/adb/file_sync_service.cpp * system/extras/ext4_utils/canned_fs_config.c */ /* This API is deprecated. New users should call get_fs_config. */ void fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid, unsigned* gid, unsigned* mode, uint64_t* capabilities); struct fs_config { uid_t uid; gid_t gid; mode_t mode; uint64_t capabilities; }; /* * If a file system configuration was found for the specified path, store it to *conf. * Returns whether a file system configuration was found. * * dir: Whether path refers to a directory. * target_out_path: Path to the base directory to read the file system configuration from, or a null * pointer to use the root directory as the base. Host code should pass $ANDROID_PRODUCT_OUT or * equivalent, and device code should pass a null pointer. */ bool get_fs_config(const char* path, bool dir, const char* target_out_path, struct fs_config* conf); __END_DECLS