]> git.ipfire.org Git - thirdparty/libarchive.git/commitdiff
[sparse] UAF in sparse_reset 3019/head
authorTim Kientzle <kientzle@acm.org>
Sat, 9 May 2026 01:48:45 +0000 (18:48 -0700)
committerTim Kientzle <kientzle@acm.org>
Sat, 9 May 2026 01:48:45 +0000 (18:48 -0700)
libarchive/archive_entry_sparse.c

index c430896119fb8444b638e5279de206a581a876c9..1e84ff7f8589162152d7f7621f6d1e9ed3a03c8a 100644 (file)
@@ -127,9 +127,10 @@ archive_entry_sparse_count(struct archive_entry *entry)
 int
 archive_entry_sparse_reset(struct archive_entry * entry)
 {
+       /* Counting can change sparse_head, so do it first */
+       int count = archive_entry_sparse_count(entry);
        entry->sparse_p = entry->sparse_head;
-
-       return archive_entry_sparse_count(entry);
+       return (count);
 }
 
 int