Merge "e2fsdroid: Correctly process the root inode" am: 702c28b202
am: 33cc4403b5
Change-Id: I5f0e07ab579f0cf5c5728a110f7e454fc2c9df60
diff --git a/contrib/android/e2fsdroid.c b/contrib/android/e2fsdroid.c
index 237df51..e784428 100644
--- a/contrib/android/e2fsdroid.c
+++ b/contrib/android/e2fsdroid.c
@@ -265,10 +265,12 @@
case 'u':
if (!parse_ugid_map(optarg, &uid_map))
exit(EXIT_FAILURE);
+ android_configure = 1;
break;
case 'g':
if (!parse_ugid_map(optarg, &gid_map))
exit(EXIT_FAILURE);
+ android_configure = 1;
break;
default:
usage(EXIT_FAILURE);
diff --git a/contrib/android/perms.c b/contrib/android/perms.c
index 546c059..d86249d 100644
--- a/contrib/android/perms.c
+++ b/contrib/android/perms.c
@@ -135,7 +135,12 @@
/* Permissions */
if (params->fs_config_func != NULL) {
- params->fs_config_func(params->filename, S_ISDIR(inode.i_mode),
+ const char *filename = params->filename;
+ if (strcmp(filename, params->mountpoint) == 0) {
+ /* The root of the filesystem needs to be an empty string. */
+ filename = "";
+ }
+ params->fs_config_func(filename, S_ISDIR(inode.i_mode),
params->target_out, &uid, &gid, &imode,
&capabilities);
uid = resolve_ugid(params->uid_map, uid);
@@ -305,10 +310,7 @@
if (strlen(mountpoint) == 1 && mountpoint[0] == '/')
params.path = "";
- retval = set_selinux_xattr(fs, EXT2_ROOT_INO, ¶ms);
- if (retval)
- return retval;
- retval = set_timestamp(fs, EXT2_ROOT_INO, ¶ms);
+ retval = androidify_inode(fs, EXT2_ROOT_INO, ¶ms);
if (retval)
return retval;