Re: [PATCH v2 1/2] selftests: watchdog: fix segmentation fault due to wrong argv parsing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05/28/2017 01:57 PM, Eugeniu Rosca wrote:
> Commit 9a1dc49451a7 ("selftests: watchdog: accept multiple params on
> command line") made possible performing multiple commands between
> opening and closing of the watchdog device. However, it left some
> hardcoded indexes in the argv[], which can lead to segmentation fault
> under certain combinations of arguments (e.g. [1] and [2]). Fix this.
> 
> [1] ./watchdog-test -p 1 -t
> [2] ./watchdog-test -t 1 -p
> 
> Fixes: 9a1dc49451a7 ("selftests: watchdog: accept multiple params on command line")
> Reported-by: Timur Tabi <timur@xxxxxxxxxxxxxx>
> Signed-off-by: Eugeniu Rosca <erosca@xxxxxxxxxxxxxx>

Please see my response to the cover-letter.
Please fix this using getopt. The argument processing is getting very
complex. You can void these wrong index type that way.

thanks,
-- Shuah

> ---
>  tools/testing/selftests/watchdog/watchdog-test.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/testing/selftests/watchdog/watchdog-test.c b/tools/testing/selftests/watchdog/watchdog-test.c
> index a74c9d739d07..11d3e8cfb20c 100644
> --- a/tools/testing/selftests/watchdog/watchdog-test.c
> +++ b/tools/testing/selftests/watchdog/watchdog-test.c
> @@ -75,13 +75,13 @@ int main(int argc, char *argv[])
>              ret = ioctl(fd, WDIOC_SETOPTIONS, &flags);
>              if (!ret)
>                  printf("Watchdog card enabled.\n");
> -        } else if (!strncasecmp(argv[i], "-t", 2) && argv[2]) {
> +        } else if (!strncasecmp(argv[i], "-t", 2) && argv[i + 1]) {
>              flags = atoi(argv[i + 1]);
>              ret = ioctl(fd, WDIOC_SETTIMEOUT, &flags);
>              if (!ret)
>                  printf("Watchdog timeout set to %u seconds.\n", flags);
>              i++;
> -        } else if (!strncasecmp(argv[i], "-p", 2) && argv[2]) {
> +        } else if (!strncasecmp(argv[i], "-p", 2) && argv[i + 1]) {
>              ping_rate = strtoul(argv[i + 1], NULL, 0);
>              printf("Watchdog ping rate set to %u seconds.\n", ping_rate);
>              i++;
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-kselftest" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux