On 12/18/2017 07:33 AM, Marc Hartmayer wrote:
> This fixes the compilation error (compiled with the compiler option
> '-03').
> 
> In file included from ../../tools/vsh.c:28:0:
> ../../tools/vsh.c: In function 'vshCommandOptStringQuiet':
> ../../tools/vsh.c:838:30: error: potential null pointer dereference 
> [-Werror=null-dereference]
>      assert(!needData || valid->type != VSH_OT_BOOL);
> 
> Signed-off-by: Marc Hartmayer <mhart...@linux.vnet.ibm.com>
> Reviewed-by: Boris Fiuczynski <fiu...@linux.vnet.ibm.com>
> ---
>  tools/vsh.c | 6 ++++--
>  1 file changed, 4 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/vsh.c b/tools/vsh.c
> index e878119b988f..677eb9db3e41 100644
> --- a/tools/vsh.c
> +++ b/tools/vsh.c
> @@ -816,8 +816,8 @@ vshCommandFree(vshCmd *cmd)
>   * to the option if found, 0 with *OPT set to NULL if the name is
>   * valid and the option is not required, -1 with *OPT set to NULL if
>   * the option is required but not present, and assert if NAME is not
> - * valid (which indicates a programming error).  No error messages are
> - * issued if a value is returned.
> + * valid or the option was not found (which indicates a programming
> + * error).  No error messages are issued if a value is returned.
>   */
>  static int
>  vshCommandOpt(const vshCmd *cmd, const char *name, vshCmdOpt **opt,
> @@ -835,6 +835,8 @@ vshCommandOpt(const vshCmd *cmd, const char *name, 
> vshCmdOpt **opt,
>              break;
>          valid++;
>      }
> +    assert(valid);
> +

Could we combine the subsequent one to have :

assert(valid && (!needData || valid->type != VSH_OT_BOOL));

?

John

>      assert(!needData || valid->type != VSH_OT_BOOL);
>      if (valid->flags & VSH_OFLAG_REQ)
>          ret = -1;
> 

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to