linker: fix invalid zip file handling
The argument to CloseArchive has type ZipArchiveHandle, but we're passing it a ZipArchiveHandle*. The compiler doesn't detect the type mismatch because ZipArchiveHandle is a typedef for void*. Remove a duplicate close() call: The fourth argument to OpenArchiveFd is "bool assume_ownership = true". Even if the function fails, ownership of the fd is still transferred to a ZipArchive object that's deleted when this code calls CloseArchive. AFAIK, this code path is rarely or never hit. Bug: none Test: manual (eventually, 'linker64 /system!/foo') Change-Id: I95d79809b6e118fb3c39c7b98b8055c8e324db1a
This commit is contained in:
parent
773c697f81
commit
0adf09b370
|
@ -918,8 +918,7 @@ bool ZipArchiveCache::get_or_open(const char* zip_path, ZipArchiveHandle* handle
|
|||
|
||||
if (OpenArchiveFd(fd, "", handle) != 0) {
|
||||
// invalid zip-file (?)
|
||||
CloseArchive(handle);
|
||||
close(fd);
|
||||
CloseArchive(*handle);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue