> On Aug 8, 2016, at 3:45 PM, dev-requ...@openvswitch.org wrote:
> 
> Date: Sun,  7 Aug 2016 22:06:05 +0100
> From: Bhanuprakash Bodireddy <bhanuprakash.bodire...@intel.com 
> <mailto:bhanuprakash.bodire...@intel.com>>
> To: dev@openvswitch.org <mailto:dev@openvswitch.org>
> Subject: [ovs-dev] [PATCH 2/2] ovs-appctl: Fix potential crash with
>       timeout argument
> Message-ID:
>       <1470603965-73273-2-git-send-email-bhanuprakash.bodire...@intel.com 
> <mailto:1470603965-73273-2-git-send-email-bhanuprakash.bodire...@intel.com>>
> 
> ovs-appctl can crash with missing timeout argument.
>  # ovs-appctl --timeout= dpif-netdev/pmd-stats-show
> 
> Fix by using strtol and validating the timeout value.
> 
> Signed-off-by: Bhanuprakash Bodireddy <bhanuprakash.bodire...@intel.com 
> <mailto:bhanuprakash.bodire...@intel.com>>
> ---
> utilities/ovs-appctl.c | 9 ++++++++-
> 1 file changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/utilities/ovs-appctl.c b/utilities/ovs-appctl.c
> index 8f87cc4..2543ee9 100644
> --- a/utilities/ovs-appctl.c
> +++ b/utilities/ovs-appctl.c
> @@ -127,6 +127,7 @@ parse_command_line(int argc, char *argv[])
>     char *short_options_ = 
> ovs_cmdl_long_options_to_short_options(long_options);
>     char *short_options = xasprintf("+%s", short_options_);
>     const char *target;
> +    int timeout;
>     int e_options;
> 
>     target = NULL;
> @@ -165,7 +166,13 @@ parse_command_line(int argc, char *argv[])
>             exit(EXIT_SUCCESS);
> 
>         case 'T':
> -            time_alarm(atoi(optarg));
> +            timeout = strtol(optarg, NULL, 10);
> +            if (timeout <= 0) {
> +                ovs_fatal(0, "timeout value %s on -t or --timeout is 
> invalid",
> +                               optarg);
> +            } else {
> +                time_alarm(timeout);
> +            }
>             break;
> 
>         case 'V':
> -- 
> 2.4.11

It seems to me that it’s unnecessary to change the codes. If the “timeout” is 
empty, the “atoi” function will convert it to 0, then time_alarm will disable 
the “timeout” feature, and return directly. If the “timeout” is not a positive 
number, (e.g. -100), the check will been done in the time_alarm.




_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to