diff options
author | Tianjie <xunchang@google.com> | 2020-05-29 17:18:44 -0700 |
---|---|---|
committer | Tianjie <xunchang@google.com> | 2020-05-29 17:26:19 -0700 |
commit | 9760d1a21d405d944fc093f434d093023832b367 (patch) | |
tree | f5b7824c352a272b701a6373e31c1d62b09aaead | |
parent | 20a5aa5fdedf81f9b415e92bc09fdfa59bfb583c (diff) | |
download | extras-9760d1a21d405d944fc093f434d093023832b367.tar.gz |
Fix the parsing of images without hashtree descriptor
It's possible that the an image doesn't contain a hashtree
descriptor. And the current raises a segfault when we attempt
to validate and copy a non existing descriptor.
Bug: 157778739
Test: call fec_open on dtbo image.
Change-Id: Ieb5acf016ceeb547f2b23de43d4276ea4d013a6f
(cherry picked from commit 90e7155bdd10039448bbc5ee4636f14c0119718e)
-rw-r--r-- | libfec/avb_utils.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libfec/avb_utils.cpp b/libfec/avb_utils.cpp index 8913f2a1..849556ef 100644 --- a/libfec/avb_utils.cpp +++ b/libfec/avb_utils.cpp @@ -82,6 +82,10 @@ int parse_avb_image(fec_handle *f, const std::vector<uint8_t> &vbmeta) { const AvbHashtreeDescriptor *hashtree_descriptor_ptr = nullptr; avb_descriptor_foreach(vbmeta.data(), vbmeta.size(), parse_descriptor, &hashtree_descriptor_ptr); + if (!hashtree_descriptor_ptr) { + error("failed to find avb hashtree descriptor"); + return -1; + } AvbHashtreeDescriptor hashtree_descriptor; if (!avb_hashtree_descriptor_validate_and_byteswap(hashtree_descriptor_ptr, |