]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
console: add lxc_pty_map_ids()
authorChristian Brauner <christian.brauner@ubuntu.com>
Sun, 24 Dec 2017 18:13:54 +0000 (19:13 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Fri, 19 Jan 2018 14:00:02 +0000 (15:00 +0100)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/conf.c
src/lxc/conf.h
src/lxc/console.c
src/lxc/console.h
src/lxc/start.c
src/lxc/tools/lxc_attach.c

index b90a18f9dd9c366816d45f8db3bdc6614436bf23..1c2faef28b35ea0b6191e746a07edc3a5749dd51 100644 (file)
@@ -2864,24 +2864,6 @@ int chown_mapped_root(char *path, struct lxc_conf *conf)
        return ret;
 }
 
-int lxc_ttys_shift_ids(struct lxc_conf *c)
-{
-       if (lxc_list_empty(&c->id_map))
-               return 0;
-
-       if (!strcmp(c->console.name, ""))
-               return 0;
-
-       if (chown_mapped_root(c->console.name, c) < 0) {
-               ERROR("failed to chown console \"%s\"", c->console.name);
-               return -1;
-       }
-
-       TRACE("chowned console \"%s\"", c->console.name);
-
-       return 0;
-}
-
 /* NOTE: Must not be called from inside the container namespace! */
 int lxc_create_tmp_proc_mount(struct lxc_conf *conf)
 {
index 0286be02862d7427ba8dfa9bb9755f858d57289b..71df182d6e08f781e6ba227f33e401b7d7a09237 100644 (file)
@@ -348,7 +348,6 @@ extern int lxc_setup(struct lxc_handler *handler);
 extern int find_unmapped_nsid(struct lxc_conf *conf, enum idtype idtype);
 extern int mapped_hostid(unsigned id, struct lxc_conf *conf, enum idtype idtype);
 extern int chown_mapped_root(char *path, struct lxc_conf *conf);
-extern int lxc_ttys_shift_ids(struct lxc_conf *c);
 extern int userns_exec_1(struct lxc_conf *conf, int (*fn)(void *), void *data,
                         const char *fn_name);
 extern int userns_exec_full(struct lxc_conf *conf, int (*fn)(void *),
index a9876289337035a0653a8d4a7798e6ddb508fefd..9f9a82ad2a30c12d764116893ba528fa71b36cb8 100644 (file)
@@ -910,3 +910,25 @@ void lxc_pty_conf_free(struct lxc_console *console)
        free(console->log_path);
        free(console->path);
 }
+
+int lxc_pty_map_ids(struct lxc_conf *c, struct lxc_console *pty)
+{
+       int ret;
+
+       if (lxc_list_empty(&c->id_map))
+               return 0;
+
+       ret = strcmp(pty->name, "");
+       if (ret == 0)
+               return 0;
+
+       ret = chown_mapped_root(pty->name, c);
+       if (ret < 0) {
+               ERROR("Failed to chown \"%s\"", pty->name);
+               return -1;
+       }
+
+       TRACE("Chowned \"%s\"", pty->name);
+
+       return 0;
+}
index 5b79b2c9f0ac969119acb49ec5483f4991cdca2b..99e1d3fe64b03cb9a7d2fa7c3bdcf1ffce61c981 100644 (file)
@@ -235,5 +235,6 @@ extern int lxc_login_pty(int fd);
 extern void lxc_pty_conf_free(struct lxc_console *console);
 extern void lxc_pty_info_init(struct lxc_pty_info *pty);
 extern void lxc_pty_init(struct lxc_console *pty);
+extern int lxc_pty_map_ids(struct lxc_conf *c, struct lxc_console *pty);
 
 #endif
index 7d6929d179da507045ff4694619afa28a399b93f..ea272106bafe7e1d470a38eebe10c80dbdb1bf43 100644 (file)
@@ -749,7 +749,8 @@ int lxc_init(const char *name, struct lxc_handler *handler)
        }
        TRACE("Created console");
 
-       if (lxc_ttys_shift_ids(conf) < 0) {
+       ret = lxc_pty_map_ids(conf, &conf->console);
+       if (ret < 0) {
                ERROR("Failed to shift tty into container.");
                goto out_restore_sigmask;
        }
index 82d67fa927f2afb7da74bc022df760adfa05cac1..d88f7da5648d0652b4cacb843596d81838973cbc 100644 (file)
@@ -338,7 +338,8 @@ static int get_pty_on_host(struct lxc_container *c, struct wrapargs *wrap, int *
        conf->console.descr = &descr;
 
        /* Shift ttys to container. */
-       if (lxc_ttys_shift_ids(conf) < 0) {
+       ret = lxc_pty_map_ids(conf, &conf->console);
+       if (ret < 0) {
                fprintf(stderr, "Failed to shift tty into container\n");
                goto err1;
        }