libvulkan: Don't try to load compressed/unaligned libraries from APK
Bug: 28825642
Change-Id: I46ea3a54010cccf9e23696a4aff52a42a31d92b1
diff --git a/vulkan/libvulkan/layers_extensions.cpp b/vulkan/libvulkan/layers_extensions.cpp
index aa35657..82169ff 100644
--- a/vulkan/libvulkan/layers_extensions.cpp
+++ b/vulkan/libvulkan/layers_extensions.cpp
@@ -366,8 +366,15 @@
reinterpret_cast<const char*>(name.name) + prefix.length(),
name.name_length - prefix.length());
// only enumerate direct entries of the directory, not subdirectories
- if (filename.find('/') == filename.npos)
- functor(filename);
+ if (filename.find('/') != filename.npos)
+ continue;
+ // Check whether it *may* be possible to load the library directly from
+ // the APK. Loading still may fail for other reasons, but this at least
+ // lets us avoid failed-to-load log messages in the typical case of
+ // compressed and/or unaligned libraries.
+ if (entry.method != kCompressStored || entry.offset % PAGE_SIZE != 0)
+ continue;
+ functor(filename);
}
EndIteration(iter_cookie);
CloseArchive(zip);