]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
confile: fix append_unexp_config_line() 2696/head
authorChristian Brauner <christian.brauner@ubuntu.com>
Wed, 17 Oct 2018 13:16:27 +0000 (15:16 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Thu, 18 Oct 2018 13:56:29 +0000 (15:56 +0200)
Reported-by: 2xsec dh48.jeong@samsung.com
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/confile.c

index af7be15015a7fa86aa4bd7924b937f08151cf731..203755f18fe2efc79ded25940c4a12f8f27ca397 100644 (file)
@@ -2038,10 +2038,12 @@ static int set_config_console_size(const char *key, const char *value,
 
 int append_unexp_config_line(const char *line, struct lxc_conf *conf)
 {
-       size_t len = conf->unexpanded_len, linelen = strlen(line);
+       size_t linelen;
+       size_t len = conf->unexpanded_len;
 
        update_hwaddr(line);
 
+       linelen = strlen(line);
        while (conf->unexpanded_alloced <= len + linelen + 2) {
                char *tmp = realloc(conf->unexpanded_config,
                                    conf->unexpanded_alloced + 1024);
@@ -2050,16 +2052,16 @@ int append_unexp_config_line(const char *line, struct lxc_conf *conf)
 
                if (!conf->unexpanded_config)
                        *tmp = '\0';
+
                conf->unexpanded_config = tmp;
                conf->unexpanded_alloced += 1024;
        }
 
-       (void)strlcat(conf->unexpanded_config, line, conf->unexpanded_alloced);
+       memcpy(conf->unexpanded_config + conf->unexpanded_len, line, linelen);
        conf->unexpanded_len += linelen;
-       if (line[linelen - 1] != '\n') {
-               (void)strlcat(conf->unexpanded_config, "\n", conf->unexpanded_alloced);
-               conf->unexpanded_len++;
-       }
+       if (line[linelen - 1] != '\n')
+               conf->unexpanded_config[conf->unexpanded_len++] = '\n';
+       conf->unexpanded_config[conf->unexpanded_len] = '\0';
 
        return 0;
 }