Merge "libziparchive: encode type in fdsan owner tag."

This commit is contained in:
Josh Gao 2018-09-20 19:22:03 +00:00 committed by Gerrit Code Review
commit 3da42a6c05
1 changed files with 9 additions and 2 deletions

View File

@ -184,6 +184,13 @@ static int32_t AddToHash(ZipStringOffset* hash_table, const uint64_t hash_table_
return 0;
}
#if defined(__BIONIC__)
uint64_t GetOwnerTag(const ZipArchive* archive) {
return android_fdsan_create_owner_tag(ANDROID_FDSAN_OWNER_TYPE_ZIPARCHIVE,
reinterpret_cast<uint64_t>(archive));
}
#endif
ZipArchive::ZipArchive(const int fd, bool assume_ownership)
: mapped_zip(fd),
close_file(assume_ownership),
@ -195,7 +202,7 @@ ZipArchive::ZipArchive(const int fd, bool assume_ownership)
hash_table(nullptr) {
#if defined(__BIONIC__)
if (assume_ownership) {
android_fdsan_exchange_owner_tag(fd, 0, reinterpret_cast<uint64_t>(this));
android_fdsan_exchange_owner_tag(fd, 0, GetOwnerTag(this));
}
#endif
}
@ -213,7 +220,7 @@ ZipArchive::ZipArchive(void* address, size_t length)
ZipArchive::~ZipArchive() {
if (close_file && mapped_zip.GetFileDescriptor() >= 0) {
#if defined(__BIONIC__)
android_fdsan_close_with_tag(mapped_zip.GetFileDescriptor(), reinterpret_cast<uint64_t>(this));
android_fdsan_close_with_tag(mapped_zip.GetFileDescriptor(), GetOwnerTag(this));
#else
close(mapped_zip.GetFileDescriptor());
#endif