From 66f6a6dc6767436f7e514d3a759c9c38179060e7 Mon Sep 17 00:00:00 2001 From: Tom Marshall Date: Tue, 6 Mar 2018 16:19:18 +0100 Subject: [PATCH] fs_mgr: Ignore invalid DT device nodes With treble, the vendor kernel and ramdisk are supposed to be used. But vendors always find new and interesting ways to break things: $ cat /proc/device-tree/firmware/android/fstab/system/dev; echo /by-name/system_a $ Change-Id: I826a96ebd625b52563d3cc970bf99d9b26dc093e --- fs_mgr/fs_mgr_fstab.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/fs_mgr/fs_mgr_fstab.cpp b/fs_mgr/fs_mgr_fstab.cpp index 9b7405a3d..72a65d264 100644 --- a/fs_mgr/fs_mgr_fstab.cpp +++ b/fs_mgr/fs_mgr_fstab.cpp @@ -33,6 +33,8 @@ #include "fs_mgr_priv.h" +using android::base::StartsWith; + const std::string kDefaultAndroidDtDir("/proc/device-tree/firmware/android"); struct fs_mgr_flag_values { @@ -439,6 +441,10 @@ static std::string read_fstab_from_dt() { LERROR << "dt_fstab: Failed to find device for partition " << dp->d_name; return {}; } + if (!StartsWith(value, "/dev")) { + LERROR << "dt_fstab: Invalid device node for partition " << dp->d_name; + return {}; + } fstab_entry.push_back(value); std::string mount_point;