[libvirt] [PATCH glib] gobject-stream: fix issue found by coverity
Christophe Fergeau
cfergeau at redhat.com
Thu Feb 20 14:07:21 UTC 2014
Hey,
On Thu, Feb 20, 2014 at 01:49:31PM +0100, Pavel Hrdina wrote:
> The coverity server found issue in gvir_stream_close function that
> we ignore return values of g_input_stream_close and
> g_outpu_stream_close, but we also ignore the error message and we
missing 't' in g_output_stream_close
> assume that it's closed without error.
>
> Now we will check return values and also propagate the error message
> to the upper layers.
>
> Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> ---
> libvirt-gobject/libvirt-gobject-stream.c | 24 ++++++++++++++++++++----
> 1 file changed, 20 insertions(+), 4 deletions(-)
>
> diff --git a/libvirt-gobject/libvirt-gobject-stream.c b/libvirt-gobject/libvirt-gobject-stream.c
> index 1572022..66a12ab 100644
> --- a/libvirt-gobject/libvirt-gobject-stream.c
> +++ b/libvirt-gobject/libvirt-gobject-stream.c
> @@ -102,17 +102,33 @@ static GOutputStream* gvir_stream_get_output_stream(GIOStream *io_stream)
>
> static gboolean gvir_stream_close(GIOStream *io_stream,
> GCancellable *cancellable,
> - G_GNUC_UNUSED GError **error)
> + GError **error)
> {
> GVirStream *self = GVIR_STREAM(io_stream);
> + GError *local_error = NULL;
> + gboolean i_ret = TRUE, o_ret = TRUE;
>
> if (self->priv->input_stream)
> - g_input_stream_close(self->priv->input_stream, cancellable, NULL);
> + i_ret = g_input_stream_close(self->priv->input_stream, cancellable, &local_error);
> +
> + if (local_error) {
> + if (!*error)
> + g_propagate_error(error, local_error);
> + else
> + g_error_free(local_error);
> + }
g_propagate_error will be doing this if (!*error) check for you, so this
can be written as
if (local_error)
g_propagate_error(error, local_error);
void g_propagate_error (GError **dest,
GError *src);
If dest is NULL, free src; otherwise, moves src into *dest.
Christophe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140220/97046a1a/attachment-0001.sig>
More information about the libvir-list
mailing list