summaryrefslogtreecommitdiffstats
path: root/minzip/Zip.c
diff options
context:
space:
mode:
authorMichael Runge <mrunge@google.com>2014-10-29 19:51:51 +0100
committerAndroid Git Automerger <android-git-automerger@android.com>2014-10-29 19:51:51 +0100
commite908a45420fc4194c6007193d21d5b690e04583f (patch)
treedb2ebc4119b203ae3fe0d9d1b10b81ecfc4eb4b6 /minzip/Zip.c
parentam 5ddf4293: Log mount/unmount errors to UI (diff)
parentForce sync files written by minzip. (diff)
downloadandroid_bootable_recovery-e908a45420fc4194c6007193d21d5b690e04583f.tar
android_bootable_recovery-e908a45420fc4194c6007193d21d5b690e04583f.tar.gz
android_bootable_recovery-e908a45420fc4194c6007193d21d5b690e04583f.tar.bz2
android_bootable_recovery-e908a45420fc4194c6007193d21d5b690e04583f.tar.lz
android_bootable_recovery-e908a45420fc4194c6007193d21d5b690e04583f.tar.xz
android_bootable_recovery-e908a45420fc4194c6007193d21d5b690e04583f.tar.zst
android_bootable_recovery-e908a45420fc4194c6007193d21d5b690e04583f.zip
Diffstat (limited to 'minzip/Zip.c')
-rw-r--r--minzip/Zip.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/minzip/Zip.c b/minzip/Zip.c
index 5070104d3..70aff00cd 100644
--- a/minzip/Zip.c
+++ b/minzip/Zip.c
@@ -1067,7 +1067,8 @@ bool mzExtractRecursive(const ZipArchive *pArchive,
setfscreatecon(secontext);
}
- int fd = creat(targetFile, UNZIP_FILEMODE);
+ int fd = open(targetFile, O_CREAT|O_WRONLY|O_TRUNC|O_SYNC
+ , UNZIP_FILEMODE);
if (secontext) {
freecon(secontext);
@@ -1082,7 +1083,12 @@ bool mzExtractRecursive(const ZipArchive *pArchive,
}
bool ok = mzExtractZipEntryToFile(pArchive, pEntry, fd);
- close(fd);
+ if (ok) {
+ ok = (fsync(fd) == 0);
+ }
+ if (close(fd) != 0) {
+ ok = false;
+ }
if (!ok) {
LOGE("Error extracting \"%s\"\n", targetFile);
ok = false;