Commit Diff


commit - 7ab0422aff525c78e854d0001ce01da9541b3cd5
commit + 0bb4abaee2617204613bd5d88c90e1c407a50cc3
blob - 07d58e1a0c7abcae6e6bc3ecd53d77f3bd512b5e
blob + 739dc463c5ac0a9c46b763779baeb00bb886279d
--- lib/reference.c
+++ lib/reference.c
@@ -703,9 +703,14 @@ got_ref_list(struct got_reflist_head *refs, struct got
 		const char delim[3] = {'\0', '\0', '\0'};
 		while (1) {
 			line = fparseln(f, &len, NULL, delim, 0);
-			if (line == NULL)
-				break;
+			if (line == NULL) {
+				if (feof(f))
+					break;
+				err = got_ferror(f, GOT_ERR_BAD_REF_DATA);
+				goto done;
+			}
 			err = parse_packed_ref_line(&ref, NULL, line);
+			free(line);
 			if (err)
 				goto done;
 			if (ref) {