From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753155AbbJFTYg (ORCPT ); Tue, 6 Oct 2015 15:24:36 -0400 Received: from mail-am1on0076.outbound.protection.outlook.com ([157.56.112.76]:62231 "EHLO emea01-am1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752575AbbJFTYM (ORCPT ); Tue, 6 Oct 2015 15:24:12 -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: Michael Cree , Matt Turner , Michael Ellerman , Yoshinori Sato , Alexey Dobriyan , "Rasmus Villemoes" , Ingo Molnar , "Linus Torvalds" , Peter Zijlstra , Thomas Gleixner , "H. Peter Anvin" , Borislav Petkov , , Linux Kernel Mailing List CC: Chris Metcalf Subject: [PATCH v2 3/3] strscpy: zero any trailing garbage bytes in the destination Date: Tue, 6 Oct 2015 15:23:49 -0400 Message-ID: <1444159429-4788-4-git-send-email-cmetcalf@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1444159429-4788-1-git-send-email-cmetcalf@ezchip.com> References: <1444159429-4788-1-git-send-email-cmetcalf@ezchip.com> X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD003;1:46M+hxA0MbvyzDJ+C5+lfS3L1K76T8muj1QtvOFdo7PGA+WYnqVImBwE+KuPLMI1In1g7XOXk0LVjCgzFTXCdwrupH7FImwYo/J4vB02Iag5ha+JmsYsIS2+gWs2+YGZz1CVh+p3A236B1GP/uOIZnh8ELK/iz/erZLiYk2mow1yA8JgrWyylOxhCsN+LejtUxy6hKwwGsUV8Ch4bIaNIkEPOLeBHCxNizrguFS9wb9HuPHT2ooNNmr68SbyMJYKHH8a9xZGeZV0zoxOjLP3d7B2qzNCNXIQifPm5qVq2ZpETW3yd2zQ8LnISvaPlIPoecuuOVayhmMOQfhicVTpaj914O1eZwP7Y/65KWowqjr9mF7pwPRX7GDG+UYvqpcuXnnyrEktY4ffvWt2hJ3PZg== X-Forefront-Antispam-Report: CIP:12.216.194.146;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1109001)(1110001)(339900001)(189002)(43544003)(199003)(106466001)(81156007)(5008740100001)(50226001)(36756003)(6806005)(48376002)(97736004)(5001770100001)(104016004)(33646002)(229853001)(106356001)(105606002)(50466002)(5007970100001)(19580395003)(106476002)(19580405001)(92566002)(85426001)(46102003)(2950100001)(50986999)(47776003)(5003940100001)(189998001)(64706001)(5001960100002)(86362001)(87936001)(76176999)(107886002)(42186005)(9376005)(921003)(1121003)(4001430100001);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR02MB0782;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;VI1PR02MB0782;2:7qLSJa11vhneZ2GTq/Ic8YRpYqK7bJDCwujGQBhnJRkTnkGBP8RbjdJzKrD3UfnhuKqtZJMoXG59KBguBTPMunSW7ochBFhop5Q1o9DWGLd8jauIFf2496W5wxZ81vcbIHGvjpxfkPl7oJFABUIJB490hxl3G8uD7kUNaHkIdsU=;3:97iwtkWIkk9V9EUUHwEWhfctutJEehwXBUT8idV3LMyYsM7MlaVvEEk1t9PvxB0/6rOKCPRGVCZxWIKkkcJAkY0e8OEI8T0nWGv8W9X/BMZq7khUjSIqNb4nESR6LTjz7vhqWj/0QwhhUIMiwoS7297xV/RWYEmV5n/ssR3EK9VeMnWsJ+d7RCgLWCRNPMwptvYyZPLSO8ISFMmlJ1HIOy9qusAVa2g448Yzw65MCSLwz84cJjdWrpJ9Z6/AnZlJ;25:+dcPu2owPoaqNgMuHUMhZfieFnD81Q/kt04BFROmauvMq705abYP71WZjVaL/APAbBUuNyR3riazCOIBBua3pcUQ0FfrwblacluRZe12J6qDvv/2fWkThRBpQLtrDJFKgQ8+M6CPkuyUO7IKSDAqTEDE2H28iD4OSRAYpB+UMMjUG19ihHBqX09ZCK88DAX6jtLWe1l037cvj+TuKldoVLYjJBC5dH4quB+a8y7j7LN2eDqf+Srn/EHznn/ZcyJ77We3p9k3JY5laL0fZNVkGQ==;20:sq8rw2SkuzQEWHFsGKoT7UFRpN2pgUf5/SSGiY9NaE7CpvTbrLZuECI+yjz17jV2NtWmjc7eniGMw+5sngJW3cUraEhI61JNL2SwHLP3+G884Gu55rzp6hHR+nHEK4U+Omc92a0OQSUtPb4ciAiClgXwVq0KpgFfl+hSd3NBBIQ= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:VI1PR02MB0782; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(8121501046)(520078)(5005006)(3002001);SRVR:VI1PR02MB0782;BCL:0;PCL:0;RULEID:;SRVR:VI1PR02MB0782; X-Microsoft-Exchange-Diagnostics: 1;VI1PR02MB0782;4:SyxZ4iLJplnzPOa0oxsxarhKgSVJu2UhoqjQD61nI60ebbdXTyiA4HPxFgnjwATSUe1sxg7DAKZzIpNRnEKsRAPbGJOsY/3sN7wsIBpexGWKOw+shOpikvNoH7gADnSdUqLsEUEQBIhy0rtDhnP2jxO0B2kO4h1Cx5h25qO9vnq/Ucj1QSRELqaCIAIRX2e6eiAE1YS2+uaR5x0rr+sNPuznfslqtE87BZE584JJ5q0uE6Nvq+f4l378CsqEETLcxbhXOfgj3hEVUoAKkgDRFHMSL3GeGv5Bhr/ggAN4wXppeRSF4CZBsLG2myNS3d6G88Pzw3VsECiIKIddhjp3elx0YnIjTkDa7ox/2yu35Fs= X-Forefront-PRVS: 07215D0470 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;VI1PR02MB0782;23:Jw7G3cjb3EEk7gB2bJbmBJo+bRh/1bccQWap7W+y/?= =?us-ascii?Q?xCm+mXlJoqNt5jwB2/HVzaHdi+Koqti93SzzGR83UzUoB4B/WY821FuqKxz5?= =?us-ascii?Q?lAE+MiPAlOTaAIdsxmHaJyDkYZgjKdo780e6fyrp9aqab/ilrJSpdiKnBTlx?= =?us-ascii?Q?hArN4GKZD+Ne7TCyd54JWKx7ahhBPfet+AblqFlTysUWLtZ6zKf+P/8EP/4S?= =?us-ascii?Q?aOvlTp2KmyGcyLO4SnLTaGXtSWvDFFz5hJuz1k2mQcmoiVyvW1b4YfSlPhzZ?= =?us-ascii?Q?HyvbS9Wu0ans4zKZMGNrW1nOPmswjB01WUtFqzls48NT2uU/Tc2cI3qMlsXP?= =?us-ascii?Q?SK19dBCazZSTmSfaocTdxEjZS2V+Es/s6Y0iCoTnUWnWwBscoynF5Ouhos2W?= =?us-ascii?Q?VVCtmahesih6LrJASwUlXaGp+EtYB4tci9o8zQua7FJHppC+7SyE2KRabNbv?= =?us-ascii?Q?0LfOcAz/2BISD4oeo4T2ClbEWj6uJn/3JTO9DdMpDLSmJmHj/k+yBQoqjDWo?= =?us-ascii?Q?QiBDomqBw0k2cM9qNxaoQRAcmWjzLLK78AI5RKXaHVr+tpUB7SoqmvAMRqqu?= =?us-ascii?Q?Ae35THGapxDeKkz/rpJDQS3O+Sg8xJvIbVRoidoiW8JtS3CDa2U/ip5Bfung?= =?us-ascii?Q?w7FejAjML2/nBFrnO/ZJxehA4DwtBJEpoBf4BdCJufehAKm7g0e7piFQFjv0?= =?us-ascii?Q?CZQkjAIrw92EbMkqQ4LF0a+F8KlJmJwGMFHOoCsEHbt2HXGs52J7z7iDtPzl?= =?us-ascii?Q?gyABnMN4PWnoD3EyVzQnb3qTDgcCWR28WXU0tbA12InCtZhyprizycyt0AW2?= =?us-ascii?Q?wVVkqgkrfikGvBfiT/nJOF1T7X0Uzqhon7iKt5Kx5yJBRZIj+5xXLWF33x/b?= =?us-ascii?Q?VkC25zxWkJ7DmyDmWoBzPtskqujr+/p1xArpyNPO/KO2LkWUm++ITythkG1g?= =?us-ascii?Q?ZLXSHVDYCTdWM7L6q4abT7NMg9UfRfez8Zv18A9LrJlB0iL8RHJjob1eDLWq?= =?us-ascii?Q?KqYBjVoCSDz4JjTeYhPTEh7dzyd1EamEBlmUu9j77eako39TEVvMYnZn/KPX?= =?us-ascii?Q?/FVemzn+lrf6PZA9n9HAp0A/QAwJE+qSo5UDoAKZpCMUaD0Wlda6iycIrcNP?= =?us-ascii?Q?VHepgWMUqIBZZHkEdGEkU3IGRut9RB1ExI7AEgfdIClDRgioeH/71LrphICX?= =?us-ascii?Q?GCw9dEJZf4Z6czVwGR614HgHCsiHMFfWQCeTLlF/F+p+/wyxqbesX5qVQ=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR02MB0782;5:lVPb0uold1/G7ifiDHLIIDWs0/NLxHp3LlMeYeuJtYCh/eHOgUuiC+NgGpflX1nyJVLWOhL+7vjcudNNWPb4a/KsvaPb7elxxBHnMOk9q7yRynm0b+1MjT8AfugVJvb/0IEDHUIrNRe2eGxWfwjwPg==;24:HeQY3BeLnbb86O3NlG636dIymb9gWiDyTNjbmHBKixET5nGqjROeZmAcpb9LWI42yj1C59aQJRqgYEdTyYvYCpxBPSZY+MAOZDAozJJEZqM=;20:wjuj+W96peMhXoNFwNE69+0CHSAr+/RnY9RNy/JpMgUm3OA/lal/v7CgHogbE4CqzA6wTBMJuRhhfxNKsfPqig== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2015 19:24:08.5709 (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: VI1PR02MB0782 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 --- 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