Check an edge case when read(2) returns 0

We might end up in an infinite loop if read(2) reached EOF unexpectedly.
The problematic code in uncrypt mentioned in the bug has been fixed
by switching to libbase ReadFully(). So I grepped through the recovery
code and fixed some other occurences of the issue.

Bug: 31073201
Change-Id: Ib867029158ba23363b8f85d61c25058a635c5a6b
diff --git a/updater/blockimg.cpp b/updater/blockimg.cpp
index f00bc4b..0caa1ac 100644
--- a/updater/blockimg.cpp
+++ b/updater/blockimg.cpp
@@ -151,6 +151,10 @@
             failure_type = kFreadFailure;
             fprintf(stderr, "read failed: %s\n", strerror(errno));
             return -1;
+        } else if (r == 0) {
+            failure_type = kFreadFailure;
+            fprintf(stderr, "read reached unexpected EOF.\n");
+            return -1;
         }
         so_far += r;
     }