From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 17B64C83F10 for ; Thu, 10 Jul 2025 02:49:07 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B0B996B00B0; Wed, 9 Jul 2025 22:49:06 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AE2F86B00B1; Wed, 9 Jul 2025 22:49:06 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A20556B00B2; Wed, 9 Jul 2025 22:49:06 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 8FC806B00B0 for ; Wed, 9 Jul 2025 22:49:06 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 149111603E8 for ; Thu, 10 Jul 2025 02:49:06 +0000 (UTC) X-FDA: 83646823092.21.61CDAD3 Received: from sea.source.kernel.org (sea.source.kernel.org [172.234.252.31]) by imf28.hostedemail.com (Postfix) with ESMTP id 68433C0002 for ; Thu, 10 Jul 2025 02:49:04 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=L3XJL0VW; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf28.hostedemail.com: domain of alx@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=alx@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752115744; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=zREMmcxE/LRZo3kxFplfxyWUi37f4QYm5LAPi+hG0b0=; b=BZ9n4unhbMrphY2WUvDO2E65AXkJAxzpyV5K8YMP+Vyon62lftTRvt9Q7E02ssNDrlm8Jy hROTd44guxqjRY1xCQ2/BDsheo+1OQPtUGMR53Ix7pbzwF5uykwTIAIMDqJSR8T9DuNqw9 zMLwKMWRDxd5hKR0f6ov+E1Hu+ojkVA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752115744; a=rsa-sha256; cv=none; b=tOAsvhi3I4JNbA677nweezHcy3R4rKh6+scOyADqvHJ4vul+YkBGLMRNI9ZGzdVBfrUPOE j8PYq4+TZe6f9yPT+2f+OGb63BVedxFjXAlj7rHyLGXC5ir8YNmc37Hnw+vYtWji6dNDZL 9ZR8fWpJSDfs+zRqp44DT8ArFIP8Yac= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=L3XJL0VW; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf28.hostedemail.com: domain of alx@kernel.org designates 172.234.252.31 as permitted sender) smtp.mailfrom=alx@kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by sea.source.kernel.org (Postfix) with ESMTP id 9763343E7E; Thu, 10 Jul 2025 02:49:03 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A3AF5C4CEF6; Thu, 10 Jul 2025 02:48:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1752115743; bh=bnX2EO5r+pqFtMRMv5EjlC3aGlquhrBGrjRfqkZ+Q4c=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=L3XJL0VWa98yMD+KVZAyb+ZWjgF4nCzXocP5panSiFMJTI6BBx+tioK7gpXbtXdRa 9gmf65u9aod1uBDEOmNuIkPaWskc7Qamg1NtYETrPhmbsX0/bE5LS6ihmNIprt0HAM OQqVxElMWeExQdu9FWCgqejKvctDCJtCiBDkQeev9hoRBe2/3M9NduTGx3xb2RmYAh 6P+9WMVVSARkiwNZnChurBRLW5pqd9q0n2PhPE/+9hH3M2TdTRsDh/W9rHtXQtIOpW MHVz3EUT/Ch2XNMl4LjWHqxWcgMeSCUYrOySerOqT4Y44A7goUdD09KmNKYXkxoduw L0fhF/Aqu48yA== Date: Thu, 10 Jul 2025 04:48:56 +0200 From: Alejandro Colomar To: linux-mm@kvack.org, linux-hardening@vger.kernel.org Cc: Alejandro Colomar , Kees Cook , Christopher Bazley , shadow <~hallyn/shadow@lists.sr.ht>, linux-kernel@vger.kernel.org, Andrew Morton , kasan-dev@googlegroups.com, Dmitry Vyukov , Alexander Potapenko , Marco Elver , Christoph Lameter , David Rientjes , Vlastimil Babka , Roman Gushchin , Harry Yoo , Andrew Clayton , Rasmus Villemoes , Michal Hocko , Linus Torvalds , Al Viro Subject: [RFC v4 6/7] sprintf: Add [V]SPRINTF_END() Message-ID: <0314948eb22524d8938fab645052840eb0c20cfa.1752113247.git.alx@kernel.org> X-Mailer: git-send-email 2.50.0 References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: X-Rspamd-Queue-Id: 68433C0002 X-Stat-Signature: 438qwajua1xzhwogfqi3p85sk3ya9ior X-Rspam-User: X-Rspamd-Server: rspam06 X-HE-Tag: 1752115744-823629 X-HE-Meta: U2FsdGVkX18/Dv9I1yHkUJIfBH3GdIsRWYEztC0mtR30lnVMvqIMp5LnAvhsGfDX/8IflOmVFIbCQAOgVn8hwpm4wnhtIwxYak/QCz6Oo6r0x/ZE+HO940bjSk2a0FpYBtS5rPEiqteM1bbPt+sgwb5g2mOjo+RmzsdlpwVH4jzmiln4fARgwPR5OU47VSkJQByrvkfOcmsnW9pGSCII0iGDZmskEkeq4dKXz9hiYQKwRn8swGso6iPD7lfd5pZl7PHl/1j2NMeFo6qkMFZ+D8e38oP1BQL0MlR6kK6QfOj9TaZIIjSs047vM2UPpwr7u0DkuT6CHzY2TeJVzy6SZtNcYzC0h1Y3CgZmAJ11Cb8FuPs/VE10QCxXlczfMbc6cvgej3vpcM2oG8Oo4rVW0XY4F+y8V6bsAm+KfYOTMf8OuebHC4yI5MK6IB8sakJP6XED1FW2LUq4pwEUb0lP1M3jODtquC8AWXm38bIb+P2mk7JYyMqzAW4+lWeWXECvZ0nOWHRaiN+yNUgtL91UOufoP07FlhkE+5RMPZXxpPlS9gp82BUz3hbIOOP4ZyZgVzILfBlwC6DydfbAsdERxo5R3diVy02QTH50v0DprT8ZOFzrQ5FNBJQEkedq/zI9LYsf/mj5xyMVsDF5nUyAv0nsyzJz4pv8vQee+ua+34zBu/OiI77Kh/CjWsekmSB+eAzAHIxrURN5fKNGxWlF8qe9XYSl3VQFxSG3Cg8M6lRLr09DDXJx1dQn9bl7Io6lrq65z7jYN9LB8Z6YOql94C5QnS/bDxjvqKtKQwyx61ytdBulS7CD/M6GwPNwFFiF5yeacI2PLZY5SsJR2anvQWJjjtAvO7SCTsWyPZJQWaPzO8nSzWfrw7QTbJ1ffXTGDhciQzdg6UrXCyGJPvK6H7IOM1uxii1PYkgiOamgnTxkgWoCXnNPbrNhpgL5SplzqA/1XSg5mrzl98Ny0qk 0MtBRVhw zfoHmp2Fxh03dO4CGS5SS8mfFEbzq3kRDOWGH2Ms1+oXUf9OTcouFIL0ASb6nO0LkT/t1fmn7A10S/IKtQCCHwMT+06fGIZ/1R2e7dS+IPj6Smip6AJvOqTQrFNugcEHpclNH6XmJl4DgtZQxSljkZ5NgteGO8LQEUi7Nq2I4l1Y3QQkC7h6s3tvwxd8yzDORpPzsmLgcdx1XpMdkfZ6e52jJezaTA3mh2pIS+f2ANx3ZHSbVzFkjukVtMl/5TiCwLQplkG1v3CnGtFnNJIfTF18NoRU8ag/T5Xyg41sw9huuL15YPzI8P1UD8dNiNuDJiqHF5AIR8yavD1oWmroTUJtZMZoMZtyd5lwOjh26B+mjMGlx46+lDUsl02NFjA7Hy/WEW7qf2qVFPjmD3dluxliRJh1YLMnGlIJjo8uX9UEbtcDsUSo+ObYpm8m9TJCphL0mqvGcTdd1ZygnnY3QXifEH0JbAX+ZygPkZaaWmNco7q4bvUuLY3lyj7gTZ4Zb7LDtikxD+WxVsjqpKzp+oC2+Uddk3gWv1HOs349iWDfdUM0phtYxOGlu/PfYaRSgCypYBKyeBFf7eLkzmdn88v9WYw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: These macros take the end of the array argument implicitly to avoid programmer mistakes. This guarantees that the input is an array, unlike snprintf(buf, sizeof(buf), ...); which is dangerous if the programmer passes a pointer instead of an array. These macros are essentially the same as the 2-argument version of strscpy(), but with a formatted string, and returning a pointer to the terminating '\0' (or NULL, on error). Cc: Rasmus Villemoes Cc: Marco Elver Cc: Michal Hocko Cc: Linus Torvalds Cc: Al Viro Signed-off-by: Alejandro Colomar --- include/linux/sprintf.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/include/linux/sprintf.h b/include/linux/sprintf.h index a0dc35574521..33eb03d0b9b8 100644 --- a/include/linux/sprintf.h +++ b/include/linux/sprintf.h @@ -4,6 +4,10 @@ #include #include +#include + +#define SPRINTF_END(a, fmt, ...) sprintf_end(a, ENDOF(a), fmt, ##__VA_ARGS__) +#define VSPRINTF_END(a, fmt, ap) vsprintf_end(a, ENDOF(a), fmt, ap) int num_to_str(char *buf, int size, unsigned long long num, unsigned int width); -- 2.50.0