tools: iio: iio_utils: fix digit calculation

Message ID Y0f+tKCz+ZAIoroQ@dc75zzyyyyyyyyyyyyycy-3.rev.dnainternet.fi
State New
Headers
Series tools: iio: iio_utils: fix digit calculation |

Commit Message

Matti Vaittinen Oct. 13, 2022, 12:04 p.m. UTC
  The iio_utils uses a digit calculation in order to know length of the
file name containing a buffer number. The digit calculation does not
work for number 0.

This leads to allocation of one character too small buffer for the
file-name when file name contains value '0'. (Eg. buffer0).

Fix digit calculation by returning one digit to be present for number
'0'.

Fixes: 096f9b862e60 ("tools:iio:iio_utils: implement digit calculation")
Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
---
 tools/iio/iio_utils.c | 4 ++++
 1 file changed, 4 insertions(+)


base-commit: 4fe89d07dcc2804c8b562f6c7896a45643d34b2f
  

Comments

Jonathan Cameron Oct. 16, 2022, 4:37 p.m. UTC | #1
On Thu, 13 Oct 2022 15:04:04 +0300
Matti Vaittinen <mazziesaccount@gmail.com> wrote:

> The iio_utils uses a digit calculation in order to know length of the
> file name containing a buffer number. The digit calculation does not
> work for number 0.
> 
> This leads to allocation of one character too small buffer for the
> file-name when file name contains value '0'. (Eg. buffer0).
> 
> Fix digit calculation by returning one digit to be present for number
> '0'.
> 
> Fixes: 096f9b862e60 ("tools:iio:iio_utils: implement digit calculation")
> Signed-off-by: Matti Vaittinen <mazziesaccount@gmail.com>
hi Matti

Makes sense.

Applied to the fixes-togreg branch of iio.git and marked for stable.


Thanks,

Jonathan

> ---
>  tools/iio/iio_utils.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/tools/iio/iio_utils.c b/tools/iio/iio_utils.c
> index aadee6d34c74..8d35893b2fa8 100644
> --- a/tools/iio/iio_utils.c
> +++ b/tools/iio/iio_utils.c
> @@ -547,6 +547,10 @@ static int calc_digits(int num)
>  {
>  	int count = 0;
>  
> +	/* It takes a digit to represent zero */
> +	if (!num)
> +		return 1;
> +
>  	while (num != 0) {
>  		num /= 10;
>  		count++;
> 
> base-commit: 4fe89d07dcc2804c8b562f6c7896a45643d34b2f
  

Patch

diff --git a/tools/iio/iio_utils.c b/tools/iio/iio_utils.c
index aadee6d34c74..8d35893b2fa8 100644
--- a/tools/iio/iio_utils.c
+++ b/tools/iio/iio_utils.c
@@ -547,6 +547,10 @@  static int calc_digits(int num)
 {
 	int count = 0;
 
+	/* It takes a digit to represent zero */
+	if (!num)
+		return 1;
+
 	while (num != 0) {
 		num /= 10;
 		count++;