Thread (1 message) 1 message, 1 author, 2026-01-12

Re: [PATCH v5 2/7] packfile: always declare object info to be OI_PACKED

From: Junio C Hamano <hidden>
Date: 2026-01-12 14:54:10

Patrick Steinhardt [off-list ref] writes:
Note that this also fixes a segfault introduced in 8c1b84bc97
(streaming: move logic to read packed objects streams into backend,
2025-11-23), which refactors how we stream packed objects. The intent is
to only read packed objects in case they are stored non-deltified as
we'd otherwise have to deflate them first. But the check for whether or
not the object is stored as a delta was unconditionally done via
`oi.u.packed.is_delta`, which is only valid in case `oi.whence` is
`OI_PACKED`. But under some circumstances we got `OI_DBCACHED` here,
which means that none of the `oi.u.packed` fields were initialized at
all. Consequently, we assumed the object was not stored as a delta, and
then try to read the object from `oi.u.packed.pack`, which is a `NULL`
pointer and thus causes a segfault.

Add a test case for this issue so that this cannot regress in the
future anymore.
Great.  Thanks.  Will requeue.
quoted hunk
Reported-by: Matt Smiley <redacted>
Signed-off-by: Patrick Steinhardt <redacted>
---
 odb.h                  |  1 -
 packfile.c             |  3 +--
 t/t5003-archive-zip.sh | 34 ++++++++++++++++++++++++++++++++++
 3 files changed, 35 insertions(+), 3 deletions(-)
diff --git a/odb.h b/odb.h
index 014cd9585a..73b0b87ad5 100644
--- a/odb.h
+++ b/odb.h
@@ -330,7 +330,6 @@ struct object_info {
 		OI_CACHED,
 		OI_LOOSE,
 		OI_PACKED,
-		OI_DBCACHED
 	} whence;
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help