[libvirt] [PATCH v3 03/12] LXC: sort the uidmap/gidmap of domain
Daniel P. Berrange
berrange at redhat.com
Tue Jun 4 13:30:41 UTC 2013
On Thu, May 23, 2013 at 12:06:47PM +0800, Gao feng wrote:
> Make sure the mapping line contains the root user of container
> is the first element of idmap array. So we can get the real
> user id on host for the container easily.
>
> This patch also check the map information, User must map
> the root user of container to any user of host.
>
> Signed-off-by: Gao feng <gaofeng at cn.fujitsu.com>
> ---
> src/conf/domain_conf.c | 20 ++++++++++++++++++++
> 1 file changed, 20 insertions(+)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index a3c5c84..e271f5a 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -10061,6 +10061,14 @@ cleanup:
> }
>
>
> +static int virDomainIdMapEntrySort(const void *a, const void *b)
> +{
> + const virDomainIdMapEntryPtr entrya = (const virDomainIdMapEntryPtr) a;
> + const virDomainIdMapEntryPtr entryb = (const virDomainIdMapEntryPtr) b;
> +
> + return entrya->start > entryb->start;
That isn't compliant with qsort requirements. You need to
return -ve, 0 or +ve. So
if (entrya->start > entryb->start)
return 1;
else if (entrya->start < entryb->start)
return -1;
else
return 0;
> @@ -10088,6 +10096,18 @@ virDomainIdmapDefParseXML(const xmlNodePtr *node,
> virXPathUInt("string(./@target)", ctxt, &idmap[i].target);
> virXPathUInt("string(./@count)", ctxt, &idmap[i].count);
> }
> +
> + qsort(idmap, num, sizeof(idmap[0]), virDomainIdMapEntrySort);
> +
> + if (idmap[0].start != 0) {
> + /* Root user of container hasn't been mapped to any user of host,
> + * return error. */
> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> + _("You must map the root user of container"));
> + VIR_FREE(idmap);
> + idmap = NULL;
> + }
> +
Daniel
--
|: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org -o- http://virt-manager.org :|
|: http://autobuild.org -o- http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :|
More information about the libvir-list
mailing list