Commit 0bd0053c348d6c7ff2adec2bec651f15f2317f23

Stefan Sperling 2018-03-17T15:31:18

handle empty files in got_packfile_extract_object()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
diff --git a/lib/pack.c b/lib/pack.c
index de4af7d..f9bf359 100644
--- a/lib/pack.c
+++ b/lib/pack.c
@@ -1354,9 +1354,12 @@ got_packfile_extract_object(FILE **f, struct got_object *obj,
 			goto done;
 		}
 
-		if (obj->size < GOT_DELTA_RESULT_SIZE_CACHED_MAX)
-			*f = fmemopen(NULL, obj->size, "w+");
-		else
+		if (obj->size < GOT_DELTA_RESULT_SIZE_CACHED_MAX) {
+			size_t size = obj->size;
+			if (size == 0) /* empty file */
+				size = 1;
+			*f = fmemopen(NULL, size, "w+");
+		} else
 			*f = got_opentemp();
 		if (*f == NULL) {
 			err = got_error(GOT_ERR_FILE_OPEN);