[libvirt] [PATCH] util: Fix virGetLastErrorMessage to return proper error when 'err' is NULL
Cole Robinson
crobinso at redhat.com
Wed May 11 20:23:22 UTC 2016
On 05/11/2016 02:27 PM, Erik Skultety wrote:
> Both virGetLastError and virGetLastErrorMessage call virLastErrorObject method
> that returns a thread-local error object. However, if a direct call to malloc
> or pthread_setspecific (probably also due to malloc, since it sets ENOMEM)
> fail, virLastErrorObject returns NULL which, although incorrectly interpreted
> by virGetLastError as no error, still requires the caller to check for NULL
> pointer. This isn't the case with virGetLastErrorMessage that also treated it
> incorrectly as no error, but returned the literal "no error".
> This patch tweaks the checks in the virGetLastErrorMessage function, so that
> if virLastErrorObject failed, it returned "unknown error" which is equivalent
> to the current approach with virGetLastError and if it returned NULL,
> "unknown error" was set.
>
> Signed-off-by: Erik Skultety <eskultet at redhat.com>
> ---
> src/util/virerror.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/util/virerror.c b/src/util/virerror.c
> index 5d875e3..1177570 100644
> --- a/src/util/virerror.c
> +++ b/src/util/virerror.c
> @@ -281,9 +281,9 @@ const char *
> virGetLastErrorMessage(void)
> {
> virErrorPtr err = virLastErrorObject();
> - if (!err || err->code == VIR_ERR_OK)
> + if (err && err->code == VIR_ERR_OK)
> return _("no error");
> - if (err->message == NULL)
> + if (!err || !err->message)
> return _("unknown error");
> return err->message;
> }
>
ACK
Thanks,
Cole
More information about the libvir-list
mailing list