From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753385AbbJFQrf (ORCPT ); Tue, 6 Oct 2015 12:47:35 -0400 Received: from mail-am1on0068.outbound.protection.outlook.com ([157.56.112.68]:36379 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752582AbbJFQrY (ORCPT ); Tue, 6 Oct 2015 12:47:24 -0400 Authentication-Results: spf=fail (sender IP is 12.216.194.146) smtp.mailfrom=ezchip.com; ezchip.com; dkim=none (message not signed) header.d=none;ezchip.com; dmarc=none action=none header.from=ezchip.com; From: Chris Metcalf To: Linus Torvalds , Ingo Molnar , Alexey Dobriyan , "Linux Kernel Mailing List" CC: Chris Metcalf Subject: [PATCH] strscpy: zero any trailing garbage bytes in the destination Date: Tue, 6 Oct 2015 12:47:14 -0400 Message-ID: <1444150034-31729-1-git-send-email-cmetcalf@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;AM1FFO11FD044;1:V8tqM8Rn6rr7z1IvCL+uQEbk9qZOS/XGbPbDBgK13b4YawYK/e6FdpVKpxQiuYBpmUI7LiAqc1K2GgmPKoFhuo9F2C7cOyCuybb4Eb6xnRkC6sCjavx3oEhH76+nc0hjoNT8PGbgY3tndHJQ7kfDDWz72yMrOC5Gh76VXTSe77ANAX9PscsqvuVVElxCiK95kVzBtFOamT/8D2eP43PlkbijPRFUXBQjUSsltZUVS2eK8SA0Ec17ji1MLh2bhMOlb7to7gN1gSPvzJJ7lFnjKYHxMvUijdVkOS4EF5Cms6HzgpwH0NTDgHGRQJGtDevuoedPN+4RjJ5b2bk42+Xw2PY7o/tO9tq1Pq3EQUcMGhpq0Pn/zZPI8woII/yGSXgsur39S2QQO5xxX0dccd2F3Q== X-Forefront-Antispam-Report: CIP:12.216.194.146;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1109001)(1110001)(339900001)(43544003)(189002)(199003)(92566002)(19580405001)(106466001)(105606002)(19580395003)(229853001)(50466002)(86362001)(106476002)(106356001)(48376002)(5003940100001)(50986999)(85426001)(87936001)(42186005)(2950100001)(50226001)(11100500001)(5001960100002)(107886002)(5007970100001)(5001920100001)(47776003)(33646002)(64706001)(104016004)(36756003)(5001770100001)(6806005)(81156007)(97736004)(189998001)(46102003)(5008740100001)(9376005)(4001430100001);DIR:OUT;SFP:1101;SCL:1;SRVR:HE1PR02MB0779;H:ld-1.internal.tilera.com;FPR:;SPF:Fail;PTR:InfoNoRecords;MX:1;A:1;LANG:en; MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;HE1PR02MB0779;2:xRlxoPawa6bjkXtvswZnggSsgZGsn3H0Vm7hbo0IVJDHUaNqFXeSrQhiF3zlpbg7+zt4/hwoWYzoGdEKzkwqXZNVqg7ZZKdbK5tKklF1LKLrhKZRARb99vJAXo66H2qNkCf5KxcJmyck6L8QJ8O40roOhK/NjrcOqU/+pT7HJUY=;3:KNnVHpNLGUiarEwe+X9t4yngkuIO0WcxU6ZVKy8a4TNxnqGhbbEp0TNHN7UzGP+HaXXIYkc0Q+mCx+PvXaoHCcZ8ABdC0ebrHamFVpVNhiI0gir0H1tHZiAOMNJz6Sxl9mjKELRKyi+5ZRrzDk93/XjZn0WuPOKBb/HAinfdrsIX8QG3NxpLJjD8r4rSWyINuv/pOGQA/WiSZ+tgTiWAqQo8QlZ9YDQgbwW76jvgEITPZTHll9+tiBcznbI4oPDC;25:fe1FTXjGYCnBD/wyyAPZyCUqOCVv+KYkAYoKD/jGHs3KXnz3UUZosmKmOM4cpxdKGZC5vX5BJy/PW9lDY9c+KpHx5rzQobGlrDo6AKKSJMGj3c3L1htoOuqWVnC5pCDVTaZC+ZYlqDbRA2L6Neb9pIcfLG+KRV2nNGfYlaN01Qe4tTuuPAvmktMvpJOnOG9JSn9Q8z8xJlj6x+e4h2EYEKy3p56/pZMGdnqNkxEkfco+0fhi1WmEjxCqx2VUz6nqYjuAfpPynhSwvKzlGi5pTw==;20:ZD+a/KAt8wrW4OEg00kbqQ/CD2FZfZgXpF5V+IJetSP00sLUZqYIlPIEEIY4PcU+0+Snb8ziVlTUqxA6RIgEYZhx44Gy9BeCvHl9FLhTWPYObryTHR9k6uxvhmsOiFKEudVYUQMUn5w6KoOQH+Ex216AGhJxMzu/oEmYBJtcTVY= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HE1PR02MB0779; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001);SRVR:HE1PR02MB0779;BCL:0;PCL:0;RULEID:;SRVR:HE1PR02MB0779; X-Microsoft-Exchange-Diagnostics: 1;HE1PR02MB0779;4:nNRLQM7Eg6IqZltdexnuUxPao3HC1MCFwTS96ivwYfnE9XZ1Lz+JqjWzp8KNayVOlP8SmsRIEfGDJoEzlz4hZPK+NelbORf67HA+1ZIxMPHYz2ks50fI3y8XMlkOj7PAPYR6CZ0Q5U5VP/93jVC+oceT+qtZFw/P7LPcgBIFVKN3yRpJNDhfehHQ0AGgSpnstg/t2rxVuDE/wULpODkv9hgNuMg+N6Au3GKQ9lEIOib0rTXjZytCb+wJMYloAsM/PBW76snivLS7eyOh7ap+akfa/olJRnvIksG6Xczp8+v9JzRF2gpTNQiuOwzeyLlIi6vtAt1NiD9F/OMDwUj2Ks5WXFnrzhPqn9XvnsGZbJc= X-Forefront-PRVS: 07215D0470 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR02MB0779;23:5S4+dX8TOb4atzqWL9YSe2C+Smz+54DlG+KSJOtZd?= =?us-ascii?Q?q1YdRPKsUZY5V5ni0X+g+gw/PklE56Z8inMmZjgItfb+Ou/pQXl8nLmtmS4o?= =?us-ascii?Q?r8xawB1aUfGsrHSWD5lpBkR1yQDdT/n5dDTaUyHz2e82QyLcsoEF1X+5hDjB?= =?us-ascii?Q?wnmnYiwQZyw5HELrVsGivYWd5WXXbDHUSxW6JMC60zoeFWZaFADSxcQj//MK?= =?us-ascii?Q?n92pP6i5S2HHmpJMzUSRxo7iKD+3KifAElBGrmkPJa5IrxwEKDtPyXWqt1Jo?= =?us-ascii?Q?V2hbi4eoiEjkHYBjSP7pu7ANa1DB+QG/QX2QDvQHCM2fHww1Fb42De5Ohdcu?= =?us-ascii?Q?ij4QVSmZOhRN8J5WAfJWPIeoZUoIbbka9in84VfoD66yG6P7+ovv0Lhh98A1?= =?us-ascii?Q?6h98eBib6F7pukzFpdBWBTpCPPadXUp2+Y/vc0qqx1uGKpqG/h2JGGziIe0l?= =?us-ascii?Q?cl4t8CCc2FNqMui7q0HqT7yUrKa92Si2S9BOejtaJjLhM5uzerf0I0AN/DcT?= =?us-ascii?Q?3nmy1+yLy0USkX3GkaeHlISvyyeILvieJxzfVIHE8gYELDOkoNT1K1ZEWgTD?= =?us-ascii?Q?0t4WQ8KpJabtFiVtTgz4at53sIpg6WmVr3ecCFyVYyYRK3ckkokO+QJqt1PH?= =?us-ascii?Q?unDoK4WFcVF30o3aepFbgXnZUlzeeGJI0IsG9dhycSoIJK/kXV/2Dnup7yd9?= =?us-ascii?Q?8mcwXPdAWyhc2JG12KHlidIVGTGODGk6MW0Yoij6sVXB/crfwH+O3NvzrtJ4?= =?us-ascii?Q?BDDBHkOErACywbPSuOX1jdLBhfMSfyzbjaOncnqJojS9aTiVs06mQZf4XeKc?= =?us-ascii?Q?A3dy30ltS8LY3tcl8ExtRD4+C7+2Xh9B8VMNIvNG4lELyFbULWy71kWnCEma?= =?us-ascii?Q?WFbhGk2pk3jpuqpERUSYK4XjEeX19edPIfOTPLpzHoAE/XyUsc3deqrUS8gs?= =?us-ascii?Q?xE4TUln1eDzR2dDfr0FIjuOVThXzNSQ3I2Ep72TU06Yz7pqKCAE3TcP4aoLj?= =?us-ascii?Q?3JVmgP4t5v0hI8USV3fWCS2qA4n/WgSS45skWjdrZqMGlEALpQAs+GLln5Xe?= =?us-ascii?Q?9vq90OZkP5fSU1481+210UQNqe1xQeGqy9SMRaVeatY4xATfSufojSWr5Lfp?= =?us-ascii?Q?RYlxi2SBmMPfEYIv+D0ZkWRkXb+hbfGjgNZihNYcOdFFwDlRjcuM98cTIZqZ?= =?us-ascii?Q?4ZD2qlP+fiuFuHLBO/V4LVfxLY24ztlm36z2C0zdLkTATJqDGMxztVRBA=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR02MB0779;5:7efKDa2jqbxzRfNtwLUnyk5v2YkPA6eo1WKhQjmPjFkza9QZ1Lb3bu3mWk23wsnu0Oz9Svno8aos3k5NU6Vlso363f7+t3iGf71F8mH3HEjbahuW6tLGpHGziOY3YQMJznQCAe5z/KH4sWe03T4jSQ==;24:UqLXE0VdJZpiwdBQZK+sWu4Sr4zbZxiIvUqWQUVDYhk+e7xiImiNhgjlR3lKofSaY3xwCJs5MI5mslJ8gUn5kb2cYrVNEWnYTdYyRw2ttSs=;20:x9LyeI2b+9gDU9UVJvMen9yBXBVtCiF2AXOV7pHDhMiznHP5xcfajz5EZWWKNnWseIXTY2AEqGfgcCjqPobxVg== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2015 16:47:19.3700 (UTC) X-MS-Exchange-CrossTenant-Id: 0fc16e0a-3cd3-4092-8b2f-0a42cff122c3 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=0fc16e0a-3cd3-4092-8b2f-0a42cff122c3;Ip=[12.216.194.146];Helo=[ld-1.internal.tilera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR02MB0779 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org It's possible that the destination can be shadowed in userspace (as, for example, the perf buffers are now). So we should take care not to leak data that could be inspected by userspace. Signed-off-by: Chris Metcalf --- Ingo, can you test this change in your Fedora+strlcpy boot test? I think it's correct but the more testing the better, particularly if we're about to add the support for strlcpy to use it. I did some light testing on big-endian tilegx and it appears that zero_bytemask() is required and does the right thing. On little-endian it's generally a no-op. This is pretty much the same pattern that fs/namei.c uses now too. lib/string.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/string.c b/lib/string.c index 8dbb7b1eab50..84775ba873b9 100644 --- a/lib/string.c +++ b/lib/string.c @@ -203,12 +203,13 @@ ssize_t strscpy(char *dest, const char *src, size_t count) unsigned long c, data; c = *(unsigned long *)(src+res); - *(unsigned long *)(dest+res) = c; if (has_zero(c, &data, &constants)) { data = prep_zero_mask(c, data, &constants); data = create_zero_mask(data); + *(unsigned long *)(dest+res) = c & zero_bytemask(data); return res + find_zero(data); } + *(unsigned long *)(dest+res) = c; res += sizeof(unsigned long); count -= sizeof(unsigned long); max -= sizeof(unsigned long); -- 2.1.2