[libvirt] [PATCH v6 2/5] util: Create virFileAccessibleAs function
Eric Blake
eblake at redhat.com
Mon Oct 24 23:31:09 UTC 2011
On 10/24/2011 04:23 AM, Michal Privoznik wrote:
> This function checks if a given path is accessible under
> given uid and gid.
> ---
> src/util/util.c | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
> src/util/util.h | 3 ++
> 2 files changed, 75 insertions(+), 0 deletions(-)
>
> +
> + if (pid) { /* parent */
> + if (virPidWait(pid,&status)< 0) {
> + /* virPidWait() already
> + * reported error */
> + return -1;
> + }
> +
> + return -(status& 0xFF);
Per the method docs, I think this has to be:
errno = status;
return -1;
> + }
> +
> + /* child.
> + * Return positive value here. Parent
> + * will change it to negative one. */
> +
> + if (forkRet< 0) {
> + ret = 1;
ret = errno;
> + goto childerror;
> + }
> +
> + if (virSetUIDGID(uid, gid)< 0) {
> + ret = 1;
ret = errno;
> + goto childerror;
> + }
> +
> + if (access(path, mode)< 0)
> + ret = 1;
ret = errno;
> +
> +childerror:
> + if ((ret& 0xFF) != ret) {
> + VIR_WARN("unable to pass desired return value %d", ret);
> + ret = 0xFF;
> + }
> +
> + _exit(ret);
That way, your exit status is 0 on success, and an errno value on error.
ACK - I'm comfortable with you making those changes and pushing, without
having to see v7.
--
Eric Blake eblake at redhat.com +1-801-349-2682
Libvirt virtualization library http://libvirt.org
More information about the libvir-list
mailing list