[libvirt] [PATCH v4 03/10] LXC: sort the uidmap/gidmap of domain

Daniel P. Berrange berrange at redhat.com
Fri Jun 7 11:41:55 UTC 2013


On Fri, Jun 07, 2013 at 03:12:20PM +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 | 25 +++++++++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index b001938..c4bb05e 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -10200,6 +10200,19 @@ cleanup:
>  }
>  
>  
> +static int virDomainIdMapEntrySort(const void *a, const void *b)
> +{
> +    const virDomainIdMapEntryPtr entrya = (const virDomainIdMapEntryPtr) a;
> +    const virDomainIdMapEntryPtr entryb = (const virDomainIdMapEntryPtr) b;
> +
> +    if (entrya->start > entryb->start)
> +        return 1;
> +    else if (entrya->start < entryb->start)
> +        return -1;
> +    else
> +        return 0;
> +}
> +
>  /* Parse the XML definition for user namespace id map.
>   *
>   * idmap has the form of
> @@ -10227,6 +10240,18 @@ virDomainIdmapDefParseXML(xmlXPathContextPtr ctxt,
>          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;
> +    }
> +
>   error:
>      ctxt->node = save_ctxt;
>      return idmap;

ACK


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