[Libguestfs] [PATCH 1/5] daemon error handling: Clear errno before calling stub functions.
Matthew Booth
mbooth at redhat.com
Mon Nov 30 15:31:58 UTC 2009
On 30/11/09 14:42, Richard W.M. Jones wrote:
>
>> From bad45d57b816c3734bcbf5f92a707fc1ff112c1c Mon Sep 17 00:00:00 2001
> From: Richard Jones<rjones at redhat.com>
> Date: Mon, 30 Nov 2009 13:55:04 +0000
> Subject: [PATCH 1/5] daemon error handling: Clear errno before calling stub functions.
>
> This just ensures that we accurately report errors, even if our
> error path code doesn't set errno. We won't end up with a bogus
> errno left over from a previous call.
> ---
> daemon/proto.c | 17 ++++++++++++++++-
> 1 files changed, 16 insertions(+), 1 deletions(-)
>
> diff --git a/daemon/proto.c b/daemon/proto.c
> index 2231037..e3ff9e9 100644
> --- a/daemon/proto.c
> +++ b/daemon/proto.c
> @@ -29,6 +29,10 @@
> #include<rpc/types.h>
> #include<rpc/xdr.h>
>
> +#ifdef HAVE_WINDOWS_H
> +#include<windows.h>
> +#endif
> +
> #include "c-ctype.h"
> #include "ignore-value.h"
>
> @@ -137,9 +141,20 @@ main_loop (int _sock)
> goto cont;
> }
>
> - /* Now start to process this message. */
> proc_nr = hdr.proc;
> serial = hdr.serial;
> +
> + /* Clear errors before we call the stub functions. This is just
> + * to ensure that we can accurately report errors in cases where
> + * error handling paths don't set errno correctly.
> + */
> + errno = 0;
> +#ifdef WIN32
> + SetLastError (0);
> + WSASetLastError (0);
> +#endif
> +
> + /* Now start to process this message. */
> dispatch_incoming_message (&xdr);
> /* Note that dispatch_incoming_message will also send a reply. */
>
> -- 1.6.5.2
Looks safe. ACK.
Incidentally, what's returning success but still setting an error code
which requires this?
Matt
--
Matthew Booth, RHCA, RHCSS
Red Hat Engineering, Virtualisation Team
M: +44 (0)7977 267231
GPG ID: D33C3490
GPG FPR: 3733 612D 2D05 5458 8A8A 1600 3441 EA19 D33C 3490
More information about the Libguestfs
mailing list