libdm: Redact keys from dm-crypt targets when calling GetTable. am: c434d801d6

Original change: https://googleplex-android-review.googlesource.com/c/platform/system/core/+/29655996

Change-Id: I8cfb7d9e5fb532e4d36a961e1ebad9595fdb9a95
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
David Anderson 2024-10-30 22:12:51 +00:00 committed by Automerger Merge Worker
commit 8dce05a18e

View file

@ -494,6 +494,17 @@ bool DeviceMapper::GetTableInfo(const std::string& name, std::vector<TargetInfo>
return GetTable(name, DM_STATUS_TABLE_FLAG, table);
}
void RedactTableInfo(const struct dm_target_spec& spec, std::string* data) {
if (DeviceMapper::GetTargetType(spec) == "crypt") {
auto parts = android::base::Split(*data, " ");
if (parts.size() < 2) {
return;
}
parts[1] = "redacted";
*data = android::base::Join(parts, " ");
}
}
// private methods of DeviceMapper
bool DeviceMapper::GetTable(const std::string& name, uint32_t flags,
std::vector<TargetInfo>* table) {
@ -532,6 +543,9 @@ bool DeviceMapper::GetTable(const std::string& name, uint32_t flags,
// Note: we use c_str() to eliminate any extra trailing 0s.
data = std::string(&buffer[data_offset], next_cursor - data_offset).c_str();
}
if (flags & DM_STATUS_TABLE_FLAG) {
RedactTableInfo(*spec, &data);
}
table->emplace_back(*spec, data);
cursor = next_cursor;
}