Fix error launching libguestfs when euid != uid.
authorRichard W.M. Jones <rjones@redhat.com>
Mon, 20 Sep 2010 13:02:06 +0000 (14:02 +0100)
committerRichard W.M. Jones <rjones@redhat.com>
Mon, 20 Sep 2010 14:04:57 +0000 (15:04 +0100)
commit17e7cb9937a63ed8f9bb0fb6ac7302758be76846
tree3faf8894b823a11b667ee192a67ba525aa45aa33
parent6123abc165e707a19e35b5cf16e676f79476116c
Fix error launching libguestfs when euid != uid.

When writing to a RHEV target, virt-v2v launches the libguestfs
appliance with euid:egid = 36:36, which is required to write to
an NFS target using root_squash.

Since we changed to using a cached appliance, this causes an error on
start up, as the cached files are owned by root, but the cache directory
is owned by 36:36.  The reason is that bash resets euid to uid and
egid to gid so when febootstrap-supermin-helper is executed, it runs as
root:root.  The cache directory was created by libguestfs directly so
it has the correct ownership.

This patch fixes the issue by using explicit fork/exec instead of
system (ie. not going via a shell) and by setting the real UID and
GID to the effective UID and GID before execing.
src/appliance.c