Commit Diff


commit - 43d8c06e246c7e73277ba8935ca9e9b10735e9ad
commit + 3dcf3e7438f8c2aa3c8cb3855f0f52718d0c6c3b
blob - f277b84eb3d55e26a0b1c8f7280dc7a64cccbd3d
blob + 0b81c78007efa735faf371dd4bb4a9688572d7f4
--- lib/fileindex.c
+++ lib/fileindex.c
@@ -1062,9 +1062,17 @@ got_fileindex_diff_dir(struct got_fileindex *fileindex
 	fd2 = dup(fd);
 	if (fd2 == -1)
 		return got_error_from_errno2("dup", path);
+	if (lseek(fd2, 0, SEEK_SET) == -1) {
+		err = got_error_from_errno2("lseek", path);
+		close(fd2);
+		return err;
+	}
 	dir = fdopendir(fd2);
-	if (dir == NULL)
-		return got_error_from_errno2("fdopendir", path);
+	if (dir == NULL) {
+		err = got_error_from_errno2("fdopendir", path);
+		close(fd2);
+		return err;
+	}
 	err = read_dirlist(&dirlist, dir, path);
 	if (err) {
 		closedir(dir);