Merge "Revert "adb: Do not use fs_config unless we are root (try 2)."" into main
This commit is contained in:
commit
8054f5e223
4 changed files with 24 additions and 182 deletions
|
@ -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" : []
|
||||
|
|
|
@ -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" : []
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -21,11 +21,8 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <fcntl.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <sys/cdefs.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <linux/capability.h>
|
||||
|
||||
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue