On Fri, Sep 30, 2016 at 03:56:16PM -0400, John W. Linville wrote:
> Coverity issue: 1363119
> Fixes: e1ee596326ae ("Add support for querying and setting private flags")
> 
> Signed-off-by: John W. Linville <linvi...@tuxdriver.com>
> ---
>  ethtool.c | 18 +++++++++++++-----
>  1 file changed, 13 insertions(+), 5 deletions(-)
> 
> diff --git a/ethtool.c b/ethtool.c
> index aa3ef5ed2f75..0885a61097ad 100644
> --- a/ethtool.c
> +++ b/ethtool.c
> @@ -4205,7 +4205,7 @@ static int do_gprivflags(struct cmd_context *ctx)
>       struct ethtool_gstrings *strings;
>       struct ethtool_value flags;
>       unsigned int i;
> -     int max_len = 0, cur_len;
> +     int max_len = 0, cur_len, rc;
>  
>       if (ctx->argc != 0)
>               exit_bad_args();
> @@ -4215,11 +4215,13 @@ static int do_gprivflags(struct cmd_context *ctx)
>                               1);
>       if (!strings) {
>               perror("Cannot get private flag names");
> -             return 1;
> +             rc = 1;
> +             goto err;

This goto looks redundant, since all you're doing at err is re-checking if
strings is non-null to free it.

>       if (strings->len == 0) {
>               fprintf(stderr, "No private flags defined\n");
> -             return 1;
> +             rc = 1;
> +             goto err;
>       }
>       if (strings->len > 32) {
>               /* ETHTOOL_GPFLAGS can only cover 32 flags */
> @@ -4230,7 +4232,8 @@ static int do_gprivflags(struct cmd_context *ctx)
>       flags.cmd = ETHTOOL_GPFLAGS;
>       if (send_ioctl(ctx, &flags)) {
>               perror("Cannot get private flags");
> -             return 1;
> +             rc = 1;
> +             goto err;
>       }
>  
>       /* Find longest string and align all strings accordingly */
> @@ -4248,7 +4251,12 @@ static int do_gprivflags(struct cmd_context *ctx)
>                      (const char *)strings->data + i * ETH_GSTRING_LEN,
>                      (flags.data & (1U << i)) ? "on" : "off");
>  
> -     return 0;
> +     rc = 0;
> +
> +err:
> +     if (strings)
> +             free(strings);
> +     return rc;
>  }
>  
>  static int do_sprivflags(struct cmd_context *ctx)
> -- 
> 2.7.4
> 

-- 
Jarod Wilson
ja...@redhat.com

Reply via email to