[PATCH] i2cset: fix 'i' & 's' modes otherwise 3 extra bytes are sent

Bartosz Gołaszewski bartekgola at gmail.com
Tue Oct 3 07:11:29 UTC 2017


2017-10-02 14:17 GMT+02:00 Avi Fishman <AviFishman70 at gmail.com>:
> When 'i' or 's' modes are selected block array is filled from offset 3
> (blen = 3) but copied to data.block buffer from offset 0 so first 3 bytes
> contains garbage from stack.
> The buffer that is sent is also 3 bytes too long due to those extra 3
> bytes.
>
> Signed-off-by: Avi Fishman <AviFishman70 at gmail.com>
> ---
>  miscutils/i2c_tools.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/miscutils/i2c_tools.c b/miscutils/i2c_tools.c
> index fc392d9dc..0f6ec8983 100644
> --- a/miscutils/i2c_tools.c
> +++ b/miscutils/i2c_tools.c
> @@ -616,8 +616,9 @@ int i2cset_main(int argc, char **argv)
>         case I2C_SMBUS_BLOCK_DATA:
>         case I2C_SMBUS_I2C_BLOCK_DATA:
>                 for (blen = 3; blen < (argc - 1); blen++)
> -                       block[blen] = xstrtou_range(argv[blen], 0, 0, 0xff);
> +                       block[blen - 3] = xstrtou_range(argv[blen], 0, 0, 0xff);
>                 val = -1;
> +               blen -= 3;
>                 break;
>         default:
>                 val = -1;
> --
> 2.14.1
>

Thanks for catching it!

Reviewed-by: Bartosz Golaszewski <bartekgola at gmail.com>

-- 
Best regards,
Bartosz Golaszewski


More information about the busybox mailing list