aboutsummaryrefslogtreecommitdiffstats
path: root/minzip
diff options
context:
space:
mode:
authorMichael Runge <mrunge@google.com>2014-05-06 16:54:42 -0700
committerMichael Runge <mrunge@google.com>2014-05-09 18:09:28 +0000
commitf5d9f891524862ba560650bd545668dc22622cdb (patch)
treecdb803102468ee0fb4e40317fc672543fd2bae05 /minzip
parent64e7fcd9255734e5b12cd50263563951b4e4664e (diff)
downloadbootable_recovery-f5d9f891524862ba560650bd545668dc22622cdb.zip
bootable_recovery-f5d9f891524862ba560650bd545668dc22622cdb.tar.gz
bootable_recovery-f5d9f891524862ba560650bd545668dc22622cdb.tar.bz2
Allow 0-byte files in full OTAs.
Currently, the writeProcessFunction fails when there are zero bytes to write, potentially returning errno from a previous operation, or hanging indefinitely while it waits for a >0 result on a write of size 0. This happens when the output file is intended to be zero bytes in size. Change-Id: Ib3cfcaf66d82942bc89e5f5c64697862403b38da
Diffstat (limited to 'minzip')
-rw-r--r--minzip/Zip.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/minzip/Zip.c b/minzip/Zip.c
index abc9890..5070104 100644
--- a/minzip/Zip.c
+++ b/minzip/Zip.c
@@ -698,7 +698,9 @@ static bool writeProcessFunction(const unsigned char *data, int dataLen,
void *cookie)
{
int fd = (int)(intptr_t)cookie;
-
+ if (dataLen == 0) {
+ return true;
+ }
ssize_t soFar = 0;
while (true) {
ssize_t n = write(fd, data+soFar, dataLen-soFar);