upayload->data includes an extra NUL terminator even though it is never used as a C string. In-tree users access only the first upayload->datalen bytes. Remove the redundant NUL terminator and allocate one byte less for upayload->data in dns_resolver_preparse(). Signed-off-by: Thorsten Blum --- Changes in v4: - Drop patch 2/2 from the series and submit 1/2 as a standalone patch - Reword subject and patch description - v3: https://lore.kernel.org/r/20260427114422.313356-3-thorsten.blum@linux.dev/ Changes in v3: - Update commit message - v2: https://lore.kernel.org/r/20260409225703.158552-4-thorsten.blum@linux.dev/ Changes in v2: - No changes in patch 1/2 - v1: https://lore.kernel.org/r/20260406175810.1018681-3-thorsten.blum@linux.dev/ --- net/dns_resolver/dns_key.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/net/dns_resolver/dns_key.c b/net/dns_resolver/dns_key.c index c3c8c3240ef9..451247864a63 100644 --- a/net/dns_resolver/dns_key.c +++ b/net/dns_resolver/dns_key.c @@ -203,7 +203,7 @@ dns_resolver_preparse(struct key_preparsed_payload *prep) kdebug("store result"); prep->quotalen = result_len; - upayload = kmalloc_flex(*upayload, data, result_len + 1); + upayload = kmalloc_flex(*upayload, data, result_len); if (!upayload) { kleave(" = -ENOMEM"); return -ENOMEM; @@ -211,7 +211,6 @@ dns_resolver_preparse(struct key_preparsed_payload *prep) upayload->datalen = result_len; memcpy(upayload->data, data, result_len); - upayload->data[result_len] = '\0'; prep->payload.data[dns_key_data] = upayload; kleave(" = 0");