]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
thunderbolt: Reject zero-length property entries in validator
authorMichael Bommarito <michael.bommarito@gmail.com>
Mon, 25 May 2026 09:28:25 +0000 (05:28 -0400)
committerMika Westerberg <mika.westerberg@linux.intel.com>
Tue, 26 May 2026 13:18:18 +0000 (15:18 +0200)
tb_property_entry_valid() accepts entries with length == 0 for
DIRECTORY, DATA, and TEXT types.  A zero-length TEXT entry passes
validation but causes an underflow in the null-termination logic:

  property->value.text[property->length * 4 - 1] = '\0';

When property->length is 0 this writes to offset -1 relative to
the allocation.

Reject zero-length entries early in the validator since they have no
valid representation in the XDomain property protocol.

Fixes: cdae7c07e3e3 ("thunderbolt: Add support for XDomain properties")
Cc: stable@vger.kernel.org
Assisted-by: Claude:claude-opus-4-7
Signed-off-by: Michael Bommarito <michael.bommarito@gmail.com>
Signed-off-by: Mika Westerberg <mika.westerberg@linux.intel.com>
drivers/thunderbolt/property.c

index da2c59a17db5c38b821c571dfe9f7b98bcbfd1c8..5cbc1c4f159c255a039e10824dfb5a73a9cdd636 100644 (file)
@@ -60,6 +60,8 @@ static bool tb_property_entry_valid(const struct tb_property_entry *entry,
        case TB_PROPERTY_TYPE_DIRECTORY:
        case TB_PROPERTY_TYPE_DATA:
        case TB_PROPERTY_TYPE_TEXT:
+               if (!entry->length)
+                       return false;
                if (entry->length > block_len)
                        return false;
                if (check_add_overflow(entry->value, entry->length, &end) ||