diff --git a/libcutils/abi-dumps/arm64/source-based/libcutils.so.lsdump b/libcutils/abi-dumps/arm64/source-based/libcutils.so.lsdump index 67c7514a6..333e61c18 100644 --- a/libcutils/abi-dumps/arm64/source-based/libcutils.so.lsdump +++ b/libcutils/abi-dumps/arm64/source-based/libcutils.so.lsdump @@ -289,9 +289,6 @@ { "name" : "fs_write_atomic_int" }, - { - "name" : "get_fs_config" - }, { "name" : "hashmapCreate" }, @@ -1276,27 +1273,6 @@ "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", @@ -2414,15 +2390,6 @@ "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", @@ -2717,37 +2684,6 @@ "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" : [] diff --git a/libcutils/abi-dumps/arm_arm64/source-based/libcutils.so.lsdump b/libcutils/abi-dumps/arm_arm64/source-based/libcutils.so.lsdump index f75240c04..f612fb942 100644 --- a/libcutils/abi-dumps/arm_arm64/source-based/libcutils.so.lsdump +++ b/libcutils/abi-dumps/arm_arm64/source-based/libcutils.so.lsdump @@ -299,9 +299,6 @@ { "name" : "fs_write_atomic_int" }, - { - "name" : "get_fs_config" - }, { "name" : "hashmapCreate" }, @@ -1286,27 +1283,6 @@ "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", @@ -2424,15 +2400,6 @@ "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", @@ -2727,37 +2694,6 @@ "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" : [] diff --git a/libcutils/fs_config.cpp b/libcutils/fs_config.cpp index 756ff8ebc..919be2ff2 100644 --- a/libcutils/fs_config.cpp +++ b/libcutils/fs_config.cpp @@ -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__ @@ -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__ @@ -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 -bool get_fs_config(const char* path, bool dir, const char* target_out_path, - struct fs_config* fs_conf) { +void fs_config(const char* path, int dir, const char* target_out_path, unsigned* uid, unsigned* gid, + unsigned* mode, uint64_t* capabilities) { const struct fs_path_config* pc; size_t which, plen; @@ -362,11 +362,11 @@ bool get_fs_config(const char* path, bool dir, const char* target_out_path, if (fs_config_cmp(dir, prefix, len, path, plen)) { free(prefix); close(fd); - fs_conf->uid = header.uid; - fs_conf->gid = header.gid; - fs_conf->mode = header.mode; - fs_conf->capabilities = header.capabilities; - return true; + *uid = header.uid; + *gid = header.gid; + *mode = (*mode & (~07777)) | header.mode; + *capabilities = header.capabilities; + return; } free(prefix); } @@ -375,28 +375,11 @@ bool get_fs_config(const char* path, bool dir, const char* target_out_path, for (pc = dir ? android_dirs : android_files; pc->prefix; pc++) { if (fs_config_cmp(dir, pc->prefix, strlen(pc->prefix), path, plen)) { - fs_conf->uid = pc->uid; - fs_conf->gid = pc->gid; - fs_conf->mode = pc->mode; - fs_conf->capabilities = pc->capabilities; - return true; + break; } } - 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; } diff --git a/libcutils/include/private/fs_config.h b/libcutils/include/private/fs_config.h index 9a727bc58..45f46e549 100644 --- a/libcutils/include/private/fs_config.h +++ b/libcutils/include/private/fs_config.h @@ -21,11 +21,8 @@ #pragma once -#include -#include #include #include -#include #include @@ -33,27 +30,17 @@ __BEGIN_DECLS -/* This API is deprecated. New users should call get_fs_config. */ +/* + * 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 + */ 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