Merge "Explicitly mention a confusing proto3 infelicity." into main
diff --git a/fastboot/Android.bp b/fastboot/Android.bp
index 6e47a08..d0938ee 100644
--- a/fastboot/Android.bp
+++ b/fastboot/Android.bp
@@ -170,7 +170,7 @@
"android.hardware.fastboot@1.1",
"android.hardware.fastboot-V1-ndk",
"android.hardware.health@2.0",
- "android.hardware.health-V3-ndk",
+ "android.hardware.health-V4-ndk",
"libasyncio",
"libbase",
"libbinder_ndk",
diff --git a/fs_mgr/libdm/dm.cpp b/fs_mgr/libdm/dm.cpp
index a963322..94c320a 100644
--- a/fs_mgr/libdm/dm.cpp
+++ b/fs_mgr/libdm/dm.cpp
@@ -551,6 +551,17 @@
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) {
@@ -589,6 +600,9 @@
// 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;
}
diff --git a/fs_mgr/libdm/dm_test.cpp b/fs_mgr/libdm/dm_test.cpp
index b890f47..5eddb51 100644
--- a/fs_mgr/libdm/dm_test.cpp
+++ b/fs_mgr/libdm/dm_test.cpp
@@ -814,3 +814,31 @@
TempDevice thin("thin", thinTable);
ASSERT_TRUE(thin.valid());
}
+
+TEST_F(DmTest, RedactDmCrypt) {
+ static constexpr uint64_t kImageSize = 65536;
+ unique_fd temp_file(CreateTempFile("file_1", kImageSize));
+ ASSERT_GE(temp_file, 0);
+
+ LoopDevice loop(temp_file, 10s);
+ ASSERT_TRUE(loop.valid());
+
+ static constexpr const char* kAlgorithm = "aes-cbc-essiv:sha256";
+ static constexpr const char* kKey = "0e64ef514e6a1315b1f6390cb57c9e6a";
+
+ auto target = std::make_unique<DmTargetCrypt>(0, kImageSize / 512, kAlgorithm, kKey, 0,
+ loop.device(), 0);
+ target->AllowDiscards();
+
+ DmTable table;
+ table.AddTarget(std::move(target));
+
+ auto& dm = DeviceMapper::Instance();
+ std::string crypt_path;
+ ASSERT_TRUE(dm.CreateDevice(test_name_, table, &crypt_path, 10s));
+
+ std::vector<DeviceMapper::TargetInfo> targets;
+ ASSERT_TRUE(dm.GetTableInfo(test_name_, &targets));
+ ASSERT_EQ(targets.size(), 1);
+ EXPECT_EQ(targets[0].data.find(kKey), std::string::npos);
+}
diff --git a/healthd/Android.bp b/healthd/Android.bp
index e158e07..7eb6edd 100644
--- a/healthd/Android.bp
+++ b/healthd/Android.bp
@@ -4,7 +4,10 @@
cc_defaults {
name: "libbatterymonitor_defaults",
- cflags: ["-Wall", "-Werror"],
+ cflags: [
+ "-Wall",
+ "-Werror",
+ ],
vendor_available: true,
recovery_available: true,
export_include_dirs: ["include"],
@@ -76,7 +79,7 @@
defaults: ["libbatterymonitor_defaults"],
srcs: ["BatteryMonitor.cpp"],
static_libs: [
- "android.hardware.health-V3-ndk",
+ "android.hardware.health-V4-ndk",
],
whole_static_libs: [
// Need to translate HIDL to AIDL to support legacy APIs in
@@ -165,12 +168,12 @@
defaults: ["libhealthd_charger_ui_defaults"],
static_libs: [
- "android.hardware.health-V3-ndk",
+ "android.hardware.health-V4-ndk",
"android.hardware.health-translate-ndk",
],
export_static_lib_headers: [
- "android.hardware.health-V3-ndk",
+ "android.hardware.health-V4-ndk",
],
}
@@ -242,7 +245,7 @@
static_libs: [
// common
"android.hardware.health@1.0-convert",
- "android.hardware.health-V3-ndk",
+ "android.hardware.health-V4-ndk",
"libbatterymonitor",
"libcharger_sysprop",
"libhealthd_charger_nops",
@@ -287,8 +290,8 @@
"libminui",
"libsuspend",
],
- }
- }
+ },
+ },
}
cc_test {
@@ -307,7 +310,7 @@
defaults: ["charger_defaults"],
srcs: [
"AnimationParser_test.cpp",
- "healthd_mode_charger_test.cpp"
+ "healthd_mode_charger_test.cpp",
],
static_libs: [
"android.hardware.health@1.0",
diff --git a/rootdir/Android.bp b/rootdir/Android.bp
index 3204a9f..c0d31d9 100644
--- a/rootdir/Android.bp
+++ b/rootdir/Android.bp
@@ -118,6 +118,12 @@
}
prebuilt_etc {
+ name: "init-mmd-prop.rc",
+ src: "init-mmd-prop.rc",
+ sub_dir: "init",
+}
+
+prebuilt_etc {
name: "asan.options",
src: "asan.options",
}
diff --git a/rootdir/init-mmd-prop.rc b/rootdir/init-mmd-prop.rc
new file mode 100644
index 0000000..6e9191c
--- /dev/null
+++ b/rootdir/init-mmd-prop.rc
@@ -0,0 +1,19 @@
+on property:sys.boot_completed=1
+ # When mmd package is not included in the image, we need to initialize
+ # `mmd.enabled_aconfig` sysprop instead of `mmd --set-property`.
+ #
+ # This is because of the consideration for devices in Trunkfood and Nextfood
+ # under mmd being launched via AConfig flag. The devices set up zram with
+ # mmd if `mmd_enabled` AConfig flag is enabled, otherwise set up zram with
+ # swapon_all init command. Since AConfig does not support any init script
+ # integration, we use `mmd.enabled_aconfig` copied by `mmd --set-property`
+ # instead of AConfig flag itself and we need mmd.enabled_aconfig to be empty
+ # by default, to let swapon_all command wait until aconfig flag value is
+ # loaded to the system property.
+ # Devices in Trunkfood and Nextfood needs to execute swapon_all command on
+ # `on property:mmd.enabled_aconfig=*` trigger. So initializing
+ # `mmd.enabled_aconfig` sysprop is required on images without mmd package.
+ #
+ # Note that this init file must not be in the image if mmd is built into the
+ # image.
+ setprop mmd.enabled_aconfig false
\ No newline at end of file
diff --git a/rootdir/init.rc b/rootdir/init.rc
index 54493d5..7d74d12 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -994,8 +994,11 @@
mkdir /data/misc/stats-service/ 0770 statsd system
mkdir /data/misc/train-info/ 0770 statsd system
- # Wait for apexd to finish activating APEXes before starting more processes.
+ # TODO(b/369375199): Remove once attest modules flagging is removed.
wait_for_prop apexd.status activated
+ # Wait for KeyMints to receive APEX module info before starting code from updateable APEXes.
+ # This is to prevent APEX modules from interfering in module measurement.
+ wait_for_prop keystore.module_hash.sent true
perform_apex_config
exec_start system_aconfigd_mainline_init
diff --git a/storaged/Android.bp b/storaged/Android.bp
index 357c0e6..3358742 100644
--- a/storaged/Android.bp
+++ b/storaged/Android.bp
@@ -24,7 +24,7 @@
shared_libs: [
"android.hardware.health@1.0",
"android.hardware.health@2.0",
- "android.hardware.health-V3-ndk",
+ "android.hardware.health-V4-ndk",
"libbase",
"libbinder",
"libbinder_ndk",
@@ -47,7 +47,7 @@
"-Wall",
"-Werror",
"-Wextra",
- "-Wno-unused-parameter"
+ "-Wno-unused-parameter",
],
}