Remove /data/misc/vold/user_keys/ce/${user_id} when no longer needed

When a user is removed, vold is deleting the subdirectories of
/data/misc/vold/user_keys/ce/${user_id} but not that directory itself.
This is unexpected, as none of the user's directories should be left
around.  Delete it too.

Bug: 188702840
Test: pm create-user foo
      pm remove-user 10
      stat /data/misc/vold/user_keys/ce/10 # no longer exists
Change-Id: Id4033a668fa6de1debb9ba6fdd1351c940bd35fc
This commit is contained in:
Eric Biggers 2021-05-27 17:29:10 -07:00
parent 54ebfb5806
commit d863b2cd4a

View file

@ -569,9 +569,12 @@ bool fscrypt_destroy_user_key(userid_t user_id) {
if (it != s_ephemeral_users.end()) {
s_ephemeral_users.erase(it);
} else {
for (auto const path : get_ce_key_paths(get_ce_key_directory_path(user_id))) {
auto ce_path = get_ce_key_directory_path(user_id);
for (auto const path : get_ce_key_paths(ce_path)) {
success &= android::vold::destroyKey(path);
}
success &= destroy_dir(ce_path);
auto de_key_path = get_de_key_path(user_id);
if (android::vold::pathExists(de_key_path)) {
success &= android::vold::destroyKey(de_key_path);