[lxc-devel] [lxc/master] conf: lxc_map_ids() non-functional changes
brauner on Github
lxc-bot at linuxcontainers.org
Sat Apr 15 11:33:15 UTC 2017
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 364 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20170415/610efc91/attachment.bin>
-------------- next part --------------
From 4bc3b759578023f3b1592fe080d6fa605c6e022a Mon Sep 17 00:00:00 2001
From: Christian Brauner <christian.brauner at ubuntu.com>
Date: Sat, 15 Apr 2017 13:25:59 +0200
Subject: [PATCH] conf: lxc_map_ids() non-functional changes
Signed-off-by: Christian Brauner <christian.brauner at ubuntu.com>
---
src/lxc/conf.c | 43 +++++++++++++++++++++++--------------------
src/lxc/utils.h | 1 +
2 files changed, 24 insertions(+), 20 deletions(-)
diff --git a/src/lxc/conf.c b/src/lxc/conf.c
index 530a57e..afae3ca 100644
--- a/src/lxc/conf.c
+++ b/src/lxc/conf.c
@@ -3321,11 +3321,13 @@ static int write_id_mapping(enum idtype idtype, pid_t pid, const char *buf,
int lxc_map_ids(struct lxc_list *idmap, pid_t pid)
{
- struct lxc_list *iterator;
struct id_map *map;
- int ret = 0, use_shadow = 0;
+ struct lxc_list *iterator;
enum idtype type;
- char *buf = NULL, *pos, *cmdpath = NULL;
+ char *pos;
+ char *buf = NULL, *cmdpath = NULL;
+ bool use_shadow = false;
+ int ret = 0;
/*
* If newuidmap exists, that is, if shadow is handing out subuid
@@ -3335,7 +3337,7 @@ int lxc_map_ids(struct lxc_list *idmap, pid_t pid)
*/
cmdpath = on_path("newuidmap", NULL);
if (cmdpath) {
- use_shadow = 1;
+ use_shadow = true;
free(cmdpath);
}
@@ -3344,50 +3346,51 @@ int lxc_map_ids(struct lxc_list *idmap, pid_t pid)
return -1;
}
- for(type = ID_TYPE_UID; type <= ID_TYPE_GID; type++) {
+ for (type = ID_TYPE_UID; type <= ID_TYPE_GID; type++) {
int left, fill;
- int had_entry = 0;
+ bool had_entry = false;
if (!buf) {
- buf = pos = malloc(4096);
+ buf = pos = malloc(LXC_IDMAPLEN);
if (!buf)
return -ENOMEM;
}
pos = buf;
if (use_shadow)
- pos += sprintf(buf, "new%cidmap %d",
- type == ID_TYPE_UID ? 'u' : 'g',
- pid);
+ pos += sprintf(buf, "new%cidmap %d", type == ID_TYPE_UID ? 'u' : 'g', pid);
lxc_list_for_each(iterator, idmap) {
- /* The kernel only takes <= 4k for writes to /proc/<nr>/[ug]id_map */
+ /* The kernel only takes <= 4k for writes to
+ * /proc/<nr>/[ug]id_map
+ */
map = iterator->elem;
if (map->idtype != type)
continue;
- had_entry = 1;
- left = 4096 - (pos - buf);
+ had_entry = true;
+
+ left = LXC_IDMAPLEN - (pos - buf);
fill = snprintf(pos, left, "%s%lu %lu %lu%s",
- use_shadow ? " " : "",
- map->nsid, map->hostid, map->range,
+ use_shadow ? " " : "", map->nsid,
+ map->hostid, map->range,
use_shadow ? "" : "\n");
if (fill <= 0 || fill >= left)
- SYSERROR("snprintf failed, too many mappings");
+ SYSERROR("Too many {g,u}id mappings defined.");
+
pos += fill;
}
if (!had_entry)
continue;
if (!use_shadow) {
- ret = write_id_mapping(type, pid, buf, pos-buf);
+ ret = write_id_mapping(type, pid, buf, pos - buf);
} else {
- left = 4096 - (pos - buf);
+ left = LXC_IDMAPLEN - (pos - buf);
fill = snprintf(pos, left, "\n");
if (fill <= 0 || fill >= left)
- SYSERROR("snprintf failed, too many mappings");
+ SYSERROR("Too many {g,u}id mappings defined.");
pos += fill;
ret = system(buf);
}
-
if (ret)
break;
}
diff --git a/src/lxc/utils.h b/src/lxc/utils.h
index 2b56905..d1966ff 100644
--- a/src/lxc/utils.h
+++ b/src/lxc/utils.h
@@ -39,6 +39,7 @@
/* Maximum number for 64 bit integer is a string with 21 digits: 2^64 - 1 = 21 */
#define LXC_NUMSTRLEN64 21
#define LXC_LINELEN 4096
+#define LXC_IDMAPLEN 4096
/* returns 1 on success, 0 if there were any failures */
extern int lxc_rmdir_onedev(char *path, const char *exclude);
More information about the lxc-devel
mailing list