[dpdk-dev] [PATCH] examples: fix CID 30708 out-of-bounds read

Dumitrescu, Cristian cristian.dumitrescu at intel.com
Thu Apr 28 12:54:00 CEST 2016



> -----Original Message-----
> From: Mrozowicz, SlawomirX
> Sent: Thursday, April 14, 2016 10:53 AM
> To: Dumitrescu, Cristian <cristian.dumitrescu at intel.com>
> Cc: dev at dpdk.org; Mrozowicz, SlawomirX
> <slawomirx.mrozowicz at intel.com>
> Subject: [PATCH] examples: fix CID 30708 out-of-bounds read
> 
> It fix coverity issue:
> CID 30708 (#1 of 1): Out-of-bounds read (OVERRUN)
> 12. overrun-local: Overrunning array tokens of 8 8-byte elements
> at element index 4294967294 (byte offset 34359738352)
> using index i (which evaluates to 4294967294).
> 
> Fixes: de3cfa2c9823 ("sched: initial import")
> Signed-off-by: Slawomir Mrozowicz <slawomirx.mrozowicz at intel.com>
> ---
>  examples/qos_sched/args.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/examples/qos_sched/args.c b/examples/qos_sched/args.c
> index 3e7fd08..d819269 100644
> --- a/examples/qos_sched/args.c
> +++ b/examples/qos_sched/args.c
> @@ -175,9 +175,11 @@ app_parse_opt_vals(const char *conf_str, char
> separator, uint32_t n_vals, uint32
> 
>  	n_tokens = rte_strsplit(string, strnlen(string, 32), tokens, n_vals,
> separator);
> 
> -	for(i = 0; i < n_tokens; i++) {
> +	if (n_tokens > MAX_OPT_VALUES)
> +		return -1;
> +
> +	for (i = 0; i < n_tokens; i++)
>  		opt_vals[i] = (uint32_t)atol(tokens[i]);
> -	}
> 
>  	free(string);
> 
> --
> 1.9.1

Acked-by: Cristian Dumitrescu <cristian.dumitrescu at intel.com>



More information about the dev mailing list