From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from saturn.retrosnub.co.uk ([178.18.118.26]:57012 "EHLO saturn.retrosnub.co.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756702Ab2K3NNC (ORCPT ); Fri, 30 Nov 2012 08:13:02 -0500 Message-ID: <50B8B0DE.4050908@kernel.org> Date: Fri, 30 Nov 2012 13:13:02 +0000 From: Jonathan Cameron MIME-Version: 1.0 To: Lars-Peter Clausen CC: Dan Carpenter , Jonathan Cameron , linux-iio@vger.kernel.org, kernel-janitors@vger.kernel.org Subject: Re: [patch] iio:imu: adis16480: show_firmware() buffer too small References: <20121127073142.GC8239@elgon.mountain> <50B50944.2040801@metafoo.de> In-Reply-To: <50B50944.2040801@metafoo.de> Content-Type: text/plain; charset=ISO-8859-1 Sender: linux-iio-owner@vger.kernel.org List-Id: linux-iio@vger.kernel.org On 11/27/2012 06:41 PM, Lars-Peter Clausen wrote: > On 11/27/2012 08:31 AM, Dan Carpenter wrote: >> Smatch complains that snprintf() returns the number of characters, >> not counting the NUL terminator, which *would* have been printed if >> there were enough space. In other words the return value could be more >> than sizeof(buf). >> >> In this case, we are printing something like "ff.ff\n" which is at most >> 6 characters and a NUL so that's not an issue. I changed snprintf() to >> scnprintf() to silence the warning. >> >> But since the buffer doesn't include space for the NUL terminator, we >> need to make it bigger or the "\n" will be truncated off. >> > > > Thanks, > > Acked-By: Lars-Peter Clausen > Added to togreg branch of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git >> Signed-off-by: Dan Carpenter >> >> diff --git a/drivers/iio/imu/adis16480.c b/drivers/iio/imu/adis16480.c >> index a080b35..150d7fa 100644 >> --- a/drivers/iio/imu/adis16480.c >> +++ b/drivers/iio/imu/adis16480.c >> @@ -125,7 +125,7 @@ static ssize_t adis16480_show_firmware_revision(struct file *file, >> char __user *userbuf, size_t count, loff_t *ppos) >> { >> struct adis16480 *adis16480 = file->private_data; >> - char buf[6]; >> + char buf[7]; >> size_t len; >> u16 rev; >> int ret; >> @@ -134,7 +134,7 @@ static ssize_t adis16480_show_firmware_revision(struct file *file, >> if (ret < 0) >> return ret; >> >> - len = snprintf(buf, sizeof(buf), "%x.%x\n", rev >> 8, rev & 0xff); >> + len = scnprintf(buf, sizeof(buf), "%x.%x\n", rev >> 8, rev & 0xff); >> >> return simple_read_from_buffer(userbuf, count, ppos, buf, len); >> } > > -- > To unsubscribe from this list: send the line "unsubscribe linux-iio" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >