diff options
author | Yi-Yo Chiang <yochiang@google.com> | 2021-10-27 12:08:12 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-10-27 12:08:12 +0000 |
commit | 6a58c592699aa94f6b06c1a5baf412bcfefda8a4 (patch) | |
tree | b6585c4b1ae1e8dc0aa7c004ff966196eb0d354d | |
parent | af97deddb1f4e08508f063ff0686c857af390c1d (diff) | |
parent | fb62a719a27cc654b42cde7d9e8b0b28e24190a2 (diff) | |
download | core-android-s-v2-preview-1.tar.gz |
Merge "Fix ubsan error path found by libfstab_fuzzer"android-s-v2-preview-2android-s-v2-preview-1android-s-v2-beta-2android-s-v2-preview-1
-rw-r--r-- | fs_mgr/fs_mgr_fstab.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/fs_mgr/fs_mgr_fstab.cpp b/fs_mgr/fs_mgr_fstab.cpp index ad321f05e..609bd11d7 100644 --- a/fs_mgr/fs_mgr_fstab.cpp +++ b/fs_mgr/fs_mgr_fstab.cpp @@ -130,10 +130,12 @@ void ParseMountFlags(const std::string& flags, FstabEntry* entry) { if (auto equal_sign = flag.find('='); equal_sign != std::string::npos) { const auto arg = flag.substr(equal_sign + 1); if (entry->fs_type == "f2fs" && StartsWith(flag, "reserve_root=")) { - if (!ParseInt(arg, &entry->reserved_size)) { + off64_t size_in_4k_blocks; + if (!ParseInt(arg, &size_in_4k_blocks, static_cast<off64_t>(0), + std::numeric_limits<off64_t>::max() >> 12)) { LWARNING << "Warning: reserve_root= flag malformed: " << arg; } else { - entry->reserved_size <<= 12; + entry->reserved_size = size_in_4k_blocks << 12; } } else if (StartsWith(flag, "lowerdir=")) { entry->lowerdir = std::move(arg); |