Commit 61d6eaa398ef0a5a82aeee80f9050858beb84c08

Stefan Sperling 2018-12-24T17:30:26

fix broken fwrite() check in add_file_on_disk()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
diff --git a/lib/worktree.c b/lib/worktree.c
index e9cc817..c0c6adc 100644
--- a/lib/worktree.c
+++ b/lib/worktree.c
@@ -405,14 +405,14 @@ add_file_on_disk(struct got_worktree *worktree, struct got_fileindex *fileindex,
 		if (len > 0) {
 			/* Skip blob object header first time around. */
 			ssize_t outlen = write(fd, buf + hdrlen, len - hdrlen);
-			hdrlen = 0;
 			if (outlen == -1) {
 				err = got_error_from_errno();
 				goto done;
-			} else if (outlen != len) {
+			} else if (outlen != len - hdrlen) {
 				err = got_error(GOT_ERR_IO);
 				goto done;
 			}
+			hdrlen = 0;
 		}
 	} while (len != 0);