Re: [PATCH v2 07/11] rpc: annotate various parameters as being required to be non-NULL

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

 




On 01/23/2018 08:23 AM, Daniel P. Berrange wrote:
> The server name and client data callbacks need to be non-NULL or the
> system will crash at various times. This is particularly bad when some
> of the crashes only occur post-exec restart.
> 
> Signed-off-by: Daniel P. Berrange <berrange@xxxxxxxxxx>
> ---
>  src/rpc/virnetserver.h       | 7 +++++--
>  src/rpc/virnetserverclient.h | 7 +++++--
>  2 files changed, 10 insertions(+), 4 deletions(-)
> 

My Coverity build was not happy this morning...

> diff --git a/src/rpc/virnetserverclient.h b/src/rpc/virnetserverclient.h
> index 3c48759abc..4a0d3cc25e 100644
> --- a/src/rpc/virnetserverclient.h
> +++ b/src/rpc/virnetserverclient.h
> @@ -72,14 +72,17 @@ virNetServerClientPtr virNetServerClientNew(unsigned long long id,
>                                              virNetServerClientPrivNew privNew,
>                                              virNetServerClientPrivPreExecRestart privPreExecRestart,
>                                              virFreeCallback privFree,
> -                                            void *privOpaque);
> +                                            void *privOpaque)
> +    ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(7) ATTRIBUTE_NONNULL(9);

This one caused the Coverity build to fail because virNetServerClientNew
checks "if (privNew)" before assigning client->privateData

>  
>  virNetServerClientPtr virNetServerClientNewPostExecRestart(virNetServerPtr srv,
>                                                             virJSONValuePtr object,
>                                                             virNetServerClientPrivNewPostExecRestart privNew,
>                                                             virNetServerClientPrivPreExecRestart privPreExecRestart,
>                                                             virFreeCallback privFree,
> -                                                           void *privOpaque);
> +                                                           void *privOpaque)
> +    ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(3)
> +    ATTRIBUTE_NONNULL(4) ATTRIBUTE_NONNULL(5);

Likewise here too for virNetServerClientNewPostExecRestart w/ privNew

Finally, the "tests/virnetserverclienttest.c fails to build because of
the NULL argument check.

Reproducible if you enable static analysis...

John
>  
>  virJSONValuePtr virNetServerClientPreExecRestart(virNetServerClientPtr client);
>  
> 

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



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]
  Powered by Linux