diff options
author | Michael Runge <mrunge@google.com> | 2014-10-31 01:13:21 +0100 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-10-31 01:13:21 +0100 |
commit | c2e7d903adca4195588be085011c2a6a9c80426a (patch) | |
tree | 43b9941fe34c1492a181310347b9f4f5f3758979 | |
parent | am fe8563f4: am 5ddf4293: Log mount/unmount errors to UI (diff) | |
parent | am 042c3cd0: Force sync files written by minzip. (diff) | |
download | android_bootable_recovery-c2e7d903adca4195588be085011c2a6a9c80426a.tar android_bootable_recovery-c2e7d903adca4195588be085011c2a6a9c80426a.tar.gz android_bootable_recovery-c2e7d903adca4195588be085011c2a6a9c80426a.tar.bz2 android_bootable_recovery-c2e7d903adca4195588be085011c2a6a9c80426a.tar.lz android_bootable_recovery-c2e7d903adca4195588be085011c2a6a9c80426a.tar.xz android_bootable_recovery-c2e7d903adca4195588be085011c2a6a9c80426a.tar.zst android_bootable_recovery-c2e7d903adca4195588be085011c2a6a9c80426a.zip |
-rw-r--r-- | minzip/Zip.c | 10 |
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; |