Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753811AbdGNMNy (ORCPT ); Fri, 14 Jul 2017 08:13:54 -0400 Received: from mout.kundenserver.de ([217.72.192.75]:52184 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932070AbdGNMNv (ORCPT ); Fri, 14 Jul 2017 08:13:51 -0400 From: Arnd Bergmann To: linux-kernel@vger.kernel.org, Jens Axboe , Andrew Morton Cc: Greg Kroah-Hartman , Linus Torvalds , Guenter Roeck , netdev@vger.kernel.org, "David S . Miller" , "James E . J . Bottomley" , "Martin K . Petersen" , linux-scsi@vger.kernel.org, x86@kernel.org, Arnd Bergmann , =?UTF-8?q?Uwe=20Kleine-K=C3=B6nig?= Subject: [PATCH 19/22] block: DAC960: shut up format-overflow warning Date: Fri, 14 Jul 2017 14:07:11 +0200 Message-Id: <20170714120720.906842-20-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 In-Reply-To: <20170714120720.906842-1-arnd@arndb.de> References: <20170714120720.906842-1-arnd@arndb.de> X-Provags-ID: V03:K0:yO6NB2DdAGaCBpQ31HW3l3rBybLTHqjY+Iz1Xo3MD+sF4BgKa8t uJ68961LZWwvbhO9pDqBSbz6TSIank139cOsEqibPqjaTFpG75kN5iCVwFAdwfyHPsQFxeG TQ4bo9sZPozJK1KEr72W6CmD3r4VyimmZiHwUPTmNCX8rdFE5Z7tf6uImnjl6qGNBpKQ8He wb1zvBHGOOHDmufjh3UGQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:mkrUUV/yY7s=:3UWxy19ABTYinIokGxw2qe qFlokVBP6pCJyb3jLq23ZUgn+Agb0VtC7doZGniWz6bNAtUTuqfxml64NLBxqrYAKxSXolpVK 1tNsg3HL33htklpxezKFkKKb91XeV+NYnr3LEFbxI9S5WJK5omktF9GjgqLWFLCWdg5pk/STE SoSgwOWwTHPIEmR14vOoX6PDWzxncDeXqTB1BoxB5Xyl+ruBqEOpOZclYRc/P5BvNUhBTyt8d ewb21iDlyJe/FhMyNARGgpf6IEKjPpynAw7Per71U/fX56tEHPm37kQroD/hgnb2znlCZMTGX 71zjFTilPEiHKB3yUgg4QNhZLwhVIycongu/hoERxE5w7Gl8kXLRuDmuaQuAGqGtlYcmd+u4a ncQ2nCX6undfXLd7+GX2AHXSkKhZheua5i7HkkX2QgXmoApLyFZUi2JldXFIDpams0u29rMfp keT7BBwU4cLwN4qok1cl/pPXzMPc1vfvFd0Fi0+v+OVhc76afTIh/OUFSxf2O8qK/XRXME5kk jX5/26p5p5gRJMzgwBL7HW7vDd2hmdfrUAZMoQyVtfJ/4mBz1cTkptQ9t83xdVfNYnntvPdUN B3Yrrtj8pKJjBnKGgm/B71J2UykTAcq4YlnoQd+VtV8v9/IH5WTgK2iOt3aoGU1WW55jEmi+B xn4gMO4k+J1rl7YPzmFNF/TXvGUQDRTkYNiXFDSQMaB1PZeJG4i2yeao12ekQtrq7phfSC4ac gURyxXOYd2vOFPv342j/RA4Zz3HFKxJkDjNaYg== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2539 Lines: 51 gcc-7 points out that a large controller number would overflow the string length for the procfs name and the firmware version string: drivers/block/DAC960.c: In function 'DAC960_Probe': drivers/block/DAC960.c:6591:38: warning: 'sprintf' may write a terminating nul past the end of the destination [-Wformat-overflow=] drivers/block/DAC960.c: In function 'DAC960_V1_ReadControllerConfiguration': drivers/block/DAC960.c:1681:40: error: '%02d' directive writing between 2 and 3 bytes into a region of size between 2 and 5 [-Werror=format-overflow=] drivers/block/DAC960.c:1681:40: note: directive argument in the range [0, 255] drivers/block/DAC960.c:1681:3: note: 'sprintf' output between 10 and 14 bytes into a destination of size 12 Both of these seem appropriately sized, and using snprintf() instead of sprintf() improves this by ensuring that even incorrect data won't cause undefined behavior here. Signed-off-by: Arnd Bergmann --- drivers/block/DAC960.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c index 245a879b036e..255591ab3716 100644 --- a/drivers/block/DAC960.c +++ b/drivers/block/DAC960.c @@ -1678,9 +1678,12 @@ static bool DAC960_V1_ReadControllerConfiguration(DAC960_Controller_T Enquiry2->FirmwareID.FirmwareType = '0'; Enquiry2->FirmwareID.TurnID = 0; } - sprintf(Controller->FirmwareVersion, "%d.%02d-%c-%02d", - Enquiry2->FirmwareID.MajorVersion, Enquiry2->FirmwareID.MinorVersion, - Enquiry2->FirmwareID.FirmwareType, Enquiry2->FirmwareID.TurnID); + snprintf(Controller->FirmwareVersion, sizeof(Controller->FirmwareVersion), + "%d.%02d-%c-%02d", + Enquiry2->FirmwareID.MajorVersion, + Enquiry2->FirmwareID.MinorVersion, + Enquiry2->FirmwareID.FirmwareType, + Enquiry2->FirmwareID.TurnID); if (!((Controller->FirmwareVersion[0] == '5' && strcmp(Controller->FirmwareVersion, "5.06") >= 0) || (Controller->FirmwareVersion[0] == '4' && @@ -6588,7 +6591,8 @@ static void DAC960_CreateProcEntries(DAC960_Controller_T *Controller) &dac960_proc_fops); } - sprintf(Controller->ControllerName, "c%d", Controller->ControllerNumber); + snprintf(Controller->ControllerName, sizeof(Controller->ControllerName), + "c%d", Controller->ControllerNumber); ControllerProcEntry = proc_mkdir(Controller->ControllerName, DAC960_ProcDirectoryEntry); proc_create_data("initial_status", 0, ControllerProcEntry, &dac960_initial_status_proc_fops, Controller); -- 2.9.0