[libvirt] [PATCH] event: don't queue NULL event on OOM

John Ferlan jferlan at redhat.com
Fri Jan 10 03:25:04 UTC 2014



On 01/09/2014 10:22 PM, Eric Blake wrote:
> Ever since commit 61ac8ce, Coverity complained about
> remoteNetworkBuildEventLifecycle not checking for NULL failure
> to build an event, compared to other calls in the code base.
> But the problem is latent from copy and paste; all 17 of our
> remote*BuildEvent* functions in remote_driver.c have the same
> issue - if an OOM causes an event to not be built, we happily
> pass NULL to remoteEventQueue(), but that function has marked
> event as a nonnull parameter.  We were getting lucky (the
> event queue's first use of the event happened to be a call to
> virIsObjectClass(), which acts gracefully on NULL, so there
> was no way to crash); but this is a latent bug waiting to bite
> us due to the disregard for the nonnull attribute, as well as
> a waste of resources in the event queue.  Better is to just
> refuse to queue NULL.  The discard is silent, since the problem
> only happens on OOM, and since events are already best effort -
> if we fail to get an event, it's not like we have any memory
> left to report the issue, nor any idea of who would benefit
> from knowing we couldn't create or queue the event.
> 
> * src/remote/remote_driver.c (remoteEventQueue): Ignore NULL event.
> 
> Signed-off-by: Eric Blake <eblake at redhat.com>
> ---
> 
> I don't know if this will actually shut up Coverity, or if we
> have to modify all 17 calls to remoteEventQueue to do the NULL
> check there.  I'm hoping this simpler solution does the trick.
> 
>  src/remote/remote_driver.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 

ACK




More information about the libvir-list mailing list