From patchwork Tue Jul 18 11:48:06 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 108115 Delivered-To: patch@linaro.org Received: by 10.140.101.44 with SMTP id t41csp5807644qge; Tue, 18 Jul 2017 04:49:19 -0700 (PDT) X-Received: by 10.99.49.137 with SMTP id x131mr1262528pgx.246.1500378559319; Tue, 18 Jul 2017 04:49:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1500378559; cv=none; d=google.com; s=arc-20160816; b=cukVRAYk1ontQPn2ieD2pUU+NnFUXPZM3uR7UT43BIPUfS0qKnXrE/jfRXztj5BbMu NykUxu4/rtTHH6Bl2ZgEYsNW2ybAH/pIAoRDH7Ga0gZorhhxlczDEUgUCLgF2mAli3df NxLitkJv6WIKruQAYOtLUfYXNpP7FoR+VC2lAhB+Ku8l0oox5FG0U2My6gB86bza6lYy 6rbXHjDrTTJAQX2dCdr1ADRPdacoxGuBMmHZrua1SlAR9W9CxpcPvGeyFjuPMBbf5m9I HFb/HeHt0UST0U3jY2IHmGNpE+IMGE2c/jbidLbch5nar9oqf2Hx/lKL6JQpo/sWf0Kb q5Og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=B/j/6pPfybyXr1y0EWKtq8uoEr3aQZl6L+RuVG3j9Eo=; b=g85VSEU4BwL6AS/T0LmhkQ9gpmZaIH/5dkkfsoWrUGXPyWxyZPK2YC94QubwD/NcR+ R/Ea9dZNW5g6KqHyKbUYiDrONOYtwQx9n5G/1zfq2Tib7FeYK6Eo5XXPf4wKRp5TuL+5 UT0ZQZ8kxC0bUcFhln1jFuHBXfBU/7LLEVhJCgCAgkUdhc9iGmtGfaUvoUQG1Ksq7SZo Iu84TOs5t9s+rfxe+T6Pa1YBoWmhxtbRk0589zGM1bbCYVeewV5tnX6KRUeewhQ0zsdC oGV8sV73WCX+PCk/rFrgFfBUmXV83SNwiOQ0Op/gSO+on7vtKL0ZXaUcAl+YTdenUt4A Iwcg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q81si1582007pgq.187.2017.07.18.04.49.18; Tue, 18 Jul 2017 04:49:19 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751505AbdGRLtQ (ORCPT + 25 others); Tue, 18 Jul 2017 07:49:16 -0400 Received: from mout.kundenserver.de ([212.227.126.187]:64348 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751322AbdGRLtP (ORCPT ); Tue, 18 Jul 2017 07:49:15 -0400 Received: from wuerfel.lan ([5.56.224.194]) by mrelayeu.kundenserver.de (mreue005 [212.227.15.129]) with ESMTPA (Nemesis) id 0Lu05i-1dfROB3lHa-011PyW; Tue, 18 Jul 2017 13:48:57 +0200 From: Arnd Bergmann To: Jaroslav Kysela , Takashi Iwai Cc: Arnd Bergmann , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 3/7] ALSA: ad1848: fix format string overflow warning Date: Tue, 18 Jul 2017 13:48:06 +0200 Message-Id: <20170718114820.3681255-3-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20170718114820.3681255-1-arnd@arndb.de> References: <20170718114820.3681255-1-arnd@arndb.de> X-Provags-ID: V03:K0:F9ziNUE2Xup2Gh2Cu+sVE6689W9kFeby51fmcHKadooCwNRi8Vv EfGjq0iYPgwYUBywbKyl/Tl570KzIqwk0Do6UDY7i1jvdZej3lznmP74+WWOrlM8TQIjwfF yA73AULCE9wwj24pwMfZZiLG7yKCZnl+6JNvlcy6ZKhA3Ln6tmLLLUCv1cIMEaFk78HaqHq p16cVivfNsJp29wcsXKAg== X-UI-Out-Filterresults: notjunk:1; V01:K0:i2ysn1W6KPk=:BjegXtfFUf9DI2BxEsCciV KaiLX59LeFmVeSa4YYvC/CDtnVXqYhYYd8plU1aeQVDS1E9Gkf+mPky/PujXeoHtMV0SC9X6h muhqML43OJq5h5z4/5feXInZiAunrvmTgIpaJD3e3Ng7uCAXJLKcQtNL75IdokdbKSV9to/9q 3YB5KnaelyCX8wPZF29h+UuVSfSStUNETu+OKX/ruOzy4ph/ELrcXyOApEVBDDK57AvbyFzhZ GFr4gUNM3YpiVur3Pp2cf2FBn9O0PYg/+YiYdflNunbzzV3ivJZC/4jBb8t/yeL75Q/kUDz8q dvA6lEmalRaqiMafE2pPjFV2AaMVpM4sWsGfT0TTtCpK6sN3Jves5W0O/NaZYGuiy8nFy2Z8H t+mc9aRrPk5JMsPg2zkUNVAh9vRhlYC4nldNTyon1sY1fbpPHY432nH5rf61Pw+1DACo3JCps +kxz0rfwevzWFXdsbhPcK7Wtv9OWi7XaGBEQp9z5SnXqKTPu0A9j6lZT6Wogl/yEIOmyhTP76 Zi0xPbNPc9OAip9NnShEpmER4bR05hFcbsOZeCFtiIZLDqz60j/m/tQe6tYKjUbfZZh5JTSvp kfAnKjCFZotRlTB+I/mEIcc5eCHWtdEo5LOUerik01w4+ZYfpsweF9FkfiUBOiY3CSh2m3b7a o0PZpFJHAuXBEiB2qXpaS+PGdeHg5wvmwZT1yIVFgdPFYH3HHttK5/AZmTkk5pImlwYFpyHp9 3VRiKGw84aOaggFd8GlvUi7NYGEVW5aqQwV8Tw== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The snd_pcm name is too long to fit into the card shortname or a part of the longname: sound/isa/ad1848/ad1848.c: In function 'snd_ad1848_probe': sound/isa/ad1848/ad1848.c:116:26: error: ' at 0x' directive writing 6 bytes into a region of size between 1 and 80 [-Werror=format-overflow=] sprintf(card->longname, "%s at 0x%lx, irq %d, dma %d", ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sound/isa/ad1848/ad1848.c:116:2: note: 'sprintf' output between 22 and 128 bytes into a destination of size 80 sprintf(card->longname, "%s at 0x%lx, irq %d, dma %d", ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ chip->pcm->name, chip->port, irq[n], dma1[n]); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This changes the code to use length-checking functions that truncate if necessary. The "[Thinkpad]" substring is now also part of the snprintf(), as that could also overflow the buffer. Signed-off-by: Arnd Bergmann --- sound/isa/ad1848/ad1848.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) -- 2.9.0 diff --git a/sound/isa/ad1848/ad1848.c b/sound/isa/ad1848/ad1848.c index e739b1c85c25..7c8e92f62f3b 100644 --- a/sound/isa/ad1848/ad1848.c +++ b/sound/isa/ad1848/ad1848.c @@ -110,13 +110,17 @@ static int snd_ad1848_probe(struct device *dev, unsigned int n) if (error < 0) goto out; - strcpy(card->driver, "AD1848"); - strcpy(card->shortname, chip->pcm->name); - - sprintf(card->longname, "%s at 0x%lx, irq %d, dma %d", - chip->pcm->name, chip->port, irq[n], dma1[n]); - if (thinkpad[n]) - strcat(card->longname, " [Thinkpad]"); + strlcpy(card->driver, "AD1848", sizeof(card->driver)); + strlcpy(card->shortname, chip->pcm->name, sizeof(card->shortname)); + + if (!thinkpad[n]) + snprintf(card->longname, sizeof(card->longname), + "%s at 0x%lx, irq %d, dma %d", + chip->pcm->name, chip->port, irq[n], dma1[n]); + else + snprintf(card->longname, sizeof(card->longname), + "%s at 0x%lx, irq %d, dma %d [Thinkpad]", + chip->pcm->name, chip->port, irq[n], dma1[n]); error = snd_card_register(card); if (error < 0) From patchwork Tue Jul 18 11:48:10 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 108120 Delivered-To: patch@linaro.org Received: by 10.140.101.44 with SMTP id t41csp5810263qge; Tue, 18 Jul 2017 04:52:01 -0700 (PDT) X-Received: by 10.84.231.206 with SMTP id g14mr1215298pln.259.1500378721129; Tue, 18 Jul 2017 04:52:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1500378721; cv=none; d=google.com; s=arc-20160816; b=QhvBNwh5VrYbEfIyNSY+zvLSimxxFYULe1M9f94Rk51pgVtA/nuW01Bdi2lGoVdfIT 8qJZ0ZcfuTDfbRr7SWUjThbfy3CG9FcuqbcXcK3st8xglNA2stlgtBRmY+nKWY/GJJTg Bpn/bTkIWDdCUZtq8814kpOESuAuoHquB7vP/eD6PddyH+5GtGlKVfrdnnRRR8yUoePU 6Gpl1k/4g+ylhqQwbmwOYhx9w8W4imS3NLCeQ3RRqe7Q8SVy4K5gpTJhLcp6eArfTXrb TqWx5iAr/EeIiQogGo4kv8xAT4jaJih6fO3jYv0gQtusF0jpMtq4rkyCHI+/L/TD+2ge fENQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=aV+JVR4G+j0ZsvTMx1G94HrKPnjIHbyr0XzIrNOm0G4=; b=euHSl3IqsuElwP4XcUmLIC9mx1dKYpnSQ/xssmJ48vXcacMcacO0pAjjCylK4sHYzz gChJfFzste+zTyabmyoEHtI0X09/2l5tb9pIjU5fgGh+py9yU4ptwZ3YeF8B/H3Dvlaf dNlMYqnyTGFIWavn2bc9ouVfQ8ieaLXjmByt5yGdlkUaqXlLegTdQpx7X5K55TFjccbI ChuWnn24uG6moCDOTLNAj81vQyXs8LbbFOm/58AMiRR5OJntM4rcCw0l/nFY1WJ2RovB EnnNw0AGp2Lfji96nUzN4YlsfICZK7LIPpC0qZofnnUCu0XKMZVsTnaIPoOgKUMe3x8k Pg0g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id r10si1605908pgd.322.2017.07.18.04.52.00; Tue, 18 Jul 2017 04:52:01 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751610AbdGRLv6 (ORCPT + 25 others); Tue, 18 Jul 2017 07:51:58 -0400 Received: from mout.kundenserver.de ([212.227.126.131]:59099 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751388AbdGRLv4 (ORCPT ); Tue, 18 Jul 2017 07:51:56 -0400 Received: from wuerfel.lan ([5.56.224.194]) by mrelayeu.kundenserver.de (mreue005 [212.227.15.129]) with ESMTPA (Nemesis) id 0Mex5B-1dHgWj0Bk9-00OVOV; Tue, 18 Jul 2017 13:50:28 +0200 From: Arnd Bergmann To: Jaroslav Kysela , Takashi Iwai Cc: Arnd Bergmann , Julia Lawall , alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 7/7] ALSA: pcxhr: fix string overflow warnings Date: Tue, 18 Jul 2017 13:48:10 +0200 Message-Id: <20170718114820.3681255-7-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20170718114820.3681255-1-arnd@arndb.de> References: <20170718114820.3681255-1-arnd@arndb.de> X-Provags-ID: V03:K0:QqV/x429EXN7zxqcgF1vblihOwOeG72gVPuxqgFf94qIIlu35+E yxToAgutoe7c9nTOZOU3TbR+gzib+Che/uPIjxlbN53cSLtyD3P/j67DfgyQEtUcp2jptWg XjmjM96DWFCu9LQ5mS4HXnpyZOue8MXr6xWNwE0SyMDp2R3IGl0yCg6WVsRJxIP+fz2frr2 K6peGQ37G8WUR8pGIvcmQ== X-UI-Out-Filterresults: notjunk:1; V01:K0:R+RLNXOcQOg=:kuJ5oDlpEP6IDVx/p5pMIy U/Rzqy8oDZ0reyB80x0o8M8giipjavShQ4II29bJO2nN2mfGoMf86xKoCoP/u1rff8koND+k1 w3QkBYoEYOT2QAq1mKryL2MWXVwpABGEOy4Gi+8DLNpgO+m7l/B4PIOqjlf+WRhQ3LycVSem6 iGW0CUIXCPrBZHA+1dYwyQ7pKbZixCtH5dxYYH689x8EKQ0iWrpmpbYdD42ugSEw1MQiKd+CX 7zLrwMDnt0bDMOXt1REyKCFUxFvKRJmGwAsKkJev0zSemmJMzfMGwTmzwc+qqUDjwuhiX9RgP nzPNdM17FFTonihtJgDjHN0V1GWGzzvf/882lH4EesJW7blGYOn0o/6riHoQWn9QeLQzZS6GC 4OBBosVO+T49LLeWWhF87GyvQ8eRTfpCmLGsFpDahNUERI/leyr1wGLrgDKccRusDb2GObSZm AeEjppPkGT5UpnmGRRl6mim3sb/aF3Njs54GFH2yOHJHSS6FM1gkYZqucULWFV2Pi8pO3xKIf qKotb5FWR0Be68slAw/a0ubdYrrUruidI3qIOcN+LIHOR/LCsbBrjXiQRdne6EGBrIzta6aGx o9Px8siahjoMco3l6xw4LkPbEEkRRgVcsK7v+JvZWcO2Rrxkz9dLYTj6thOZvAv3tZMY+NUUo fT+pt6+kxDtQSkNKMDb32xuQAWc+WJPj8e/3ZzLsIKJtAhgFMpRO8Bl7U43yXiHBOI+TwoxUk FmYEkXDMSaXOaFlGi+n3/TeECCD+SzZTYRvXXw== Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org With gcc-7, we get a warning about a possible string overflow: sound/pci/pcxhr/pcxhr.c: In function 'pcxhr_probe': sound/pci/pcxhr/pcxhr.c:1647:28: error: ' [PCM #' directive writing 7 bytes into a region of size between 1 and 32 [-Werror=format-overflow=] The shortname can simply be removed, and the longname can be changed into a shorter "name" string that is used in three places. Making it a little shorter (40 bytes) avoids the risk of overflowing completely, but I also use snprintf() here for extra clarity. Signed-off-by: Arnd Bergmann --- sound/pci/pcxhr/pcxhr.c | 19 ++++++++++--------- sound/pci/pcxhr/pcxhr.h | 3 +-- 2 files changed, 11 insertions(+), 11 deletions(-) -- 2.9.0 diff --git a/sound/pci/pcxhr/pcxhr.c b/sound/pci/pcxhr/pcxhr.c index bb7eee9d0c2b..fa919f52e225 100644 --- a/sound/pci/pcxhr/pcxhr.c +++ b/sound/pci/pcxhr/pcxhr.c @@ -1165,7 +1165,7 @@ int pcxhr_create_pcm(struct snd_pcxhr *chip) struct snd_pcm *pcm; char name[32]; - sprintf(name, "pcxhr %d", chip->chip_idx); + snprintf(name, sizeof(name), "pcxhr %d", chip->chip_idx); if ((err = snd_pcm_new(chip->card, name, 0, chip->nb_streams_play, chip->nb_streams_capt, &pcm)) < 0) { @@ -1252,7 +1252,7 @@ static void pcxhr_proc_info(struct snd_info_entry *entry, struct snd_pcxhr *chip = entry->private_data; struct pcxhr_mgr *mgr = chip->mgr; - snd_iprintf(buffer, "\n%s\n", mgr->longname); + snd_iprintf(buffer, "\n%s\n", mgr->name); /* stats available when embedded DSP is running */ if (mgr->dsp_loaded & (1 << PCXHR_FIRMWARE_DSP_MAIN_INDEX)) { @@ -1339,7 +1339,7 @@ static void pcxhr_proc_sync(struct snd_info_entry *entry, max_clock = PCXHR_CLOCK_TYPE_MAX; } - snd_iprintf(buffer, "\n%s\n", mgr->longname); + snd_iprintf(buffer, "\n%s\n", mgr->name); snd_iprintf(buffer, "Current Sample Clock\t: %s\n", texts[mgr->cur_clock_type]); snd_iprintf(buffer, "Current Sample Rate\t= %d\n", @@ -1597,10 +1597,9 @@ static int pcxhr_probe(struct pci_dev *pci, } mgr->irq = pci->irq; - sprintf(mgr->shortname, "Digigram %s", card_name); - sprintf(mgr->longname, "%s at 0x%lx & 0x%lx, 0x%lx irq %i", - mgr->shortname, - mgr->port[0], mgr->port[1], mgr->port[2], mgr->irq); + snprintf(mgr->name, sizeof(mgr->name), + "Digigram at 0x%lx & 0x%lx, 0x%lx irq %i", + mgr->port[0], mgr->port[1], mgr->port[2], mgr->irq); /* ISR lock */ mutex_init(&mgr->lock); @@ -1644,8 +1643,10 @@ static int pcxhr_probe(struct pci_dev *pci, } strcpy(card->driver, DRIVER_NAME); - sprintf(card->shortname, "%s [PCM #%d]", mgr->shortname, i); - sprintf(card->longname, "%s [PCM #%d]", mgr->longname, i); + snprintf(card->shortname, sizeof(card->shortname), + "Digigram [PCM #%d]", i); + snprintf(card->longname, sizeof(card->longname), + "%s [PCM #%d]", mgr->name, i); if ((err = pcxhr_create(mgr, card, i)) < 0) { snd_card_free(card); diff --git a/sound/pci/pcxhr/pcxhr.h b/sound/pci/pcxhr/pcxhr.h index 9e39e509a3ef..d799cbd37301 100644 --- a/sound/pci/pcxhr/pcxhr.h +++ b/sound/pci/pcxhr/pcxhr.h @@ -75,8 +75,7 @@ struct pcxhr_mgr { unsigned long port[3]; /* share the name */ - char shortname[32]; /* short name of this soundcard */ - char longname[96]; /* name of this soundcard */ + char name[40]; /* name of this soundcard */ struct pcxhr_rmh *prmh;