[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    Re: [PATCH] nc_bloaty: Code shrink in findline, use strchr instead.
From:       Timo Teras <timo.teras () iki ! fi>
Date:       2020-01-16 0:27:36
Message-ID: 20200116022736.4f2019c5 () vostro ! lan
[Download RAW message or body]

On Wed, 15 Jan 2020 10:30:49 -0600
Martin Lewis <martin.lewis.x84@gmail.com> wrote:

> Signed-off-by: Martin Lewis <martin.lewis.x84@gmail.com>
> ---
>  networking/nc_bloaty.c | 21 ++++-----------------
>  1 file changed, 4 insertions(+), 17 deletions(-)
> 
> diff --git a/networking/nc_bloaty.c b/networking/nc_bloaty.c
> index 034e03d21..9848ea794 100644
> --- a/networking/nc_bloaty.c
> +++ b/networking/nc_bloaty.c
> @@ -237,24 +237,11 @@ static void arm(unsigned secs)
>   Not distinguishing \n vs \r\n for the nonce; it just works as is...
> */ static unsigned findline(char *buf, unsigned siz)
>  {
> -	char * p;
> -	int x;
> -	if (!buf)                        /* various sanity checks...
> */
> -		return 0;
> -	if (siz > BIGSIZ)
> +	char *p;
> +	if (!buf || siz > BIGSIZ)
>  		return 0;
> -	x = siz;
> -	for (p = buf; x > 0; x--) {
> -		if (*p == '\n') {
> -			x = (int) (p - buf);
> -			x++;                        /* 'sokay if it
> points just past the end! */ -Debug("findline returning %d", x);
> -			return x;
> -		}
> -		p++;
> -	} /* for */
> -Debug("findline returning whole thing: %d", siz);
> -	return siz;
> +	p = strchr(buf, '\n');

This can give incorrect results, or even crash in certain conditions.
strchr does not have the upper bound 'siz' argument.

memchr could work instead.

> +	return p ? (p - buf + 1) : siz;
>  } /* findline */
>  
>  /* doexec:

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic