Received: by 2002:a05:6358:16cc:b0:ea:6187:17c9 with SMTP id r12csp6223996rwl; Mon, 9 Jan 2023 05:55:14 -0800 (PST) X-Google-Smtp-Source: AMrXdXu0LzdFbTUWRT3ICUTpZIJpGYmSTpFnSIsJyuvWpD4OIYWZk7uSDn49uJAg3Un/yZ/ypeSh X-Received: by 2002:a17:902:f609:b0:18d:dd85:303c with SMTP id n9-20020a170902f60900b0018ddd85303cmr95518847plg.8.1673272514180; Mon, 09 Jan 2023 05:55:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673272514; cv=none; d=google.com; s=arc-20160816; b=t3ZMeyAW0muB0rGEEYDmr3hpkCIzOt9tzEkdLQf5jbDafILUhdsF0xNEsG7G/lQW91 qxJdmuZoyQOwDwQwtNtnySQlSF8hG9UB3WZdKA13IOn6RXgjYWnGBq3N1Yml97NCraUv yPy9/bZ/TPcQMtisW+1Fkry/vxHmrpBuID89Cl5GIuMYfsxyWQegq91OyVjsYtEOuUir y1T1JqLKEZqaGrEDXnWEzPkHrdzXjMr8nyP3sgpEaru5vguI50pEUB20LG3SUjzU1WGB 2wpdJkjsZ6A1yO79nFLR3Vbm+OptiRN08466Uqxwye6CzdSJZFnJQ4Jfa2Hf65CGYyxH P5CQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature:dkim-filter; bh=f2GqUf1cW2FRwVBF1cKFnGll2JhGmKIGzLlt2Uudu+s=; b=vn/s8dbviM74tw9fD7wvKCE9PD9RnnLtXAVODFPA640yz4FTokNtda/nQLjE5hFCWd RBvW/jmsbAOkzsgkiq0JU39y3Bp6hp4k38KgJ1Yz9m5ttkO7fh/Xg/QibyvE7deh5x9h 4nMk3Z/0TFgoPXELBUSX+NhmDjFXU3pACW/i2JGMOxtr+1/BlvwQkgc87EYsz3KpJb0O TACXshAa1KYOOei586PQ7WZPY1zBzy6s9frEG2lKFjBbO9iOGJ5wGdXZHEilGukIrcIh hK+2hAvBjLRbp77+VANxMqB75JincH8Rxr/DMbeQ0DvPgTGBYJeHxSTWJVmfQ3JjywMu MQYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@perex.cz header.s=default header.b=zYnxmFdY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=perex.cz Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id c13-20020a170902d48d00b0018725c072a3si10106440plg.539.2023.01.09.05.55.07; Mon, 09 Jan 2023 05:55:13 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@perex.cz header.s=default header.b=zYnxmFdY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=perex.cz Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234878AbjAINjb (ORCPT + 55 others); Mon, 9 Jan 2023 08:39:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53102 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237396AbjAINif (ORCPT ); Mon, 9 Jan 2023 08:38:35 -0500 Received: from mail1.perex.cz (mail1.perex.cz [77.48.224.245]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1C28243D84 for ; Mon, 9 Jan 2023 05:36:22 -0800 (PST) Received: from mail1.perex.cz (localhost [127.0.0.1]) by smtp1.perex.cz (Perex's E-mail Delivery System) with ESMTP id AA9A5A0040; Mon, 9 Jan 2023 14:36:06 +0100 (CET) DKIM-Filter: OpenDKIM Filter v2.11.0 smtp1.perex.cz AA9A5A0040 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=perex.cz; s=default; t=1673271366; bh=f2GqUf1cW2FRwVBF1cKFnGll2JhGmKIGzLlt2Uudu+s=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=zYnxmFdY+pnNgl2bfkA4Lid2Ih+melJfNu4K1+x5uvxpl6qVkSpQ6hahXmEWy7nWL PZmRYaD5Y6PJzRz4fVdjLKZaP4xdd7JzHY878j20WKzZu7TZYU3a8G7u7/D+SO+XBo mIuDG5OubgSuIioB0bp0zAnFNMSx80QZSQjY2Tv8= Received: from [192.168.100.98] (unknown [192.168.100.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) (Authenticated sender: perex) by mail1.perex.cz (Perex's E-mail Delivery System) with ESMTPSA; Mon, 9 Jan 2023 14:36:00 +0100 (CET) Message-ID: Date: Mon, 9 Jan 2023 14:36:00 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.0 Subject: Re: [PATCH linux-next] ALSA: control-led: use strscpy() to instead of strncpy() Content-Language: en-US To: Takashi Iwai , yang.yang29@zte.com.cn Cc: tiwai@suse.com, alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, xu.panda@zte.com.cn References: <202301091945513559977@zte.com.cn> <87zgarg9ul.wl-tiwai@suse.de> From: Jaroslav Kysela In-Reply-To: <87zgarg9ul.wl-tiwai@suse.de> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,NICE_REPLY_A,RCVD_IN_DNSWL_MED, SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 09. 01. 23 13:40, Takashi Iwai wrote: > On Mon, 09 Jan 2023 12:45:51 +0100, > wrote: >> >> From: Xu Panda >> >> The implementation of strscpy() is more robust and safer. >> That's now the recommended way to copy NUL-terminated strings. >> >> Signed-off-by: Xu Panda >> Signed-off-by: Yang Yang >> --- >> sound/core/control_led.c | 3 +-- >> 1 file changed, 1 insertion(+), 2 deletions(-) >> >> diff --git a/sound/core/control_led.c b/sound/core/control_led.c >> index f975cc85772b..c88653c205eb 100644 >> --- a/sound/core/control_led.c >> +++ b/sound/core/control_led.c >> @@ -534,8 +534,7 @@ static ssize_t set_led_id(struct snd_ctl_led_card *led_card, const char *buf, si >> struct snd_ctl_elem_id id; >> int err; >> >> - strncpy(buf2, buf, len); >> - buf2[len] = '\0'; >> + strncpy(buf2, buf, len + 1); > > Still using strncpy()...? The original code should be: diff --git a/sound/core/control_led.c b/sound/core/control_led.c index f975cc85772b..b44abefcb593 100644 --- a/sound/core/control_led.c +++ b/sound/core/control_led.c @@ -530,7 +530,7 @@ static ssize_t set_led_id(struct snd_ctl_led_card *led_card, const char *buf, si bool attach) { char buf2[256], *s, *os; - size_t len = max(sizeof(s) - 1, count); + size_t len = min(sizeof(buf2) - 1, count); struct snd_ctl_elem_id id; int err; But it can be replaced with: diff --git a/sound/core/control_led.c b/sound/core/control_led.c index f975cc85772b..41d4e898d34c 100644 --- a/sound/core/control_led.c +++ b/sound/core/control_led.c @@ -530,12 +530,11 @@ static ssize_t set_led_id(struct snd_ctl_led_card *led_card, const char *buf, si bool attach) { char buf2[256], *s, *os; - size_t len = max(sizeof(s) - 1, count); struct snd_ctl_elem_id id; int err; - strncpy(buf2, buf, len); - buf2[len] = '\0'; + if (strscpy(buf2, buf, count) < 0) + return -E2BIG; memset(&id, 0, sizeof(id)); id.iface = SNDRV_CTL_ELEM_IFACE_MIXER; s = buf2; I'll send a patch ASAP. Jaroslav -- Jaroslav Kysela Linux Sound Maintainer; ALSA Project; Red Hat, Inc.