diff options
author | Michael Runge <mrunge@google.com> | 2014-05-06 16:54:42 -0700 |
---|---|---|
committer | Michael Runge <mrunge@google.com> | 2014-05-09 18:09:28 +0000 |
commit | f5d9f891524862ba560650bd545668dc22622cdb (patch) | |
tree | cdb803102468ee0fb4e40317fc672543fd2bae05 /minzip | |
parent | 64e7fcd9255734e5b12cd50263563951b4e4664e (diff) | |
download | bootable_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.c | 4 |
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); |