aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2026-02-22 12:16:19 -0800
committerJunio C Hamano <gitster@pobox.com>2026-02-22 12:19:14 -0800
commit8e06f961d7290e2fd31ea008b00b7a1ed1c904b5 (patch)
tree46788730c9b01368fd065944b810ea6450506f29
parent20daad2db4d5ff6c108d473ae068785198868d68 (diff)
downloadgit-8e06f961d7290e2fd31ea008b00b7a1ed1c904b5.tar.xz
object-file.c: avoid container_of() of a NULL container
Even though the "struct odb_transaction" member is at the beginning of the containing "struct odb_transaction_files", i.e., at offset 0, using container_of() to add offset 0 to a NULL pointer gets flagged as a bad behaviour under SANITIZE=undefined. Use container_of_or_null() to work around this issue. Helped-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--object-file.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/object-file.c b/object-file.c
index 1a24f08978..bd580ef032 100644
--- a/object-file.c
+++ b/object-file.c
@@ -720,7 +720,7 @@ struct odb_transaction_files {
static void prepare_loose_object_transaction(struct odb_transaction *base)
{
struct odb_transaction_files *transaction =
- container_of(base, struct odb_transaction_files, base);
+ container_of_or_null(base, struct odb_transaction_files, base);
/*
* We lazily create the temporary object directory
@@ -740,7 +740,7 @@ static void fsync_loose_object_transaction(struct odb_transaction *base,
int fd, const char *filename)
{
struct odb_transaction_files *transaction =
- container_of(base, struct odb_transaction_files, base);
+ container_of_or_null(base, struct odb_transaction_files, base);
/*
* If we have an active ODB transaction, we issue a call that