[libvirt] [PATCH 2/3] Ensure errno is valid when returning from lxcContainerWaitForContinue
Stefan Berger
stefanb at linux.vnet.ibm.com
Tue Nov 1 15:00:54 UTC 2011
On 11/01/2011 08:31 AM, Daniel P. Berrange wrote:
> From: "Daniel P. Berrange"<berrange at redhat.com>
>
> Only some of the return paths of lxcContainerWaitForContinue will
> have set errno. In other paths we need to set it manually to avoid
> the caller getting a random stale errno value
>
> * src/lxc/lxc_container.c: Set errno in lxcContainerWaitForContinue
> ---
> src/lxc/lxc_container.c | 9 +++++++--
> 1 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/src/lxc/lxc_container.c b/src/lxc/lxc_container.c
> index 06ccf7e..7a3589b 100644
> --- a/src/lxc/lxc_container.c
> +++ b/src/lxc/lxc_container.c
> @@ -224,8 +224,13 @@ int lxcContainerWaitForContinue(int control)
> int readLen;
>
> readLen = saferead(control,&msg, sizeof(msg));
> - if (readLen != sizeof(msg) ||
> - msg != LXC_CONTINUE_MSG) {
> + if (readLen != sizeof(msg)) {
> + if (readLen>= 0)
> + errno = EIO;
> + return -1;
> + }
> + if (msg != LXC_CONTINUE_MSG) {
msg being a single char -- ok so that works.
> + errno = EINVAL;
> return -1;
> }
>
ACK
More information about the libvir-list
mailing list