confile: be stricter in config helpers

We never call these helper without an initialized config afaict but since we're now exposing these two functions to oss-fuzz directly in a way we never do to users so let's be stricter about it. Inspired-by: #3733 Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
parent f0489268
......@@ -2598,6 +2598,9 @@ static int parse_line(char *buffer, void *data)
char *dup = buffer;
struct parse_line_conf *plc = data;
if (!plc->conf)
return syserror_set(-EINVAL, "Missing config");
/* If there are newlines in the config file we should keep them. */
empty_line = lxc_is_line_empty(dup);
if (empty_line)
......@@ -2667,6 +2670,9 @@ static struct new_config_item *parse_new_conf_line(char *buffer)
char *dup = buffer;
char *dot, *key, *line, *value;
if (is_empty_string(buffer))
return log_error_errno(NULL, EINVAL, "Empty configuration line");
linep = line = strdup(dup);
if (!line)
return NULL;
......@@ -2719,16 +2725,19 @@ static struct new_config_item *parse_new_conf_line(char *buffer)
int lxc_config_read(const char *file, struct lxc_conf *conf, bool from_include)
{
struct parse_line_conf c;
struct parse_line_conf plc;
if (!conf)
return syserror_set(-EINVAL, "Missing config");
c.conf = conf;
c.from_include = from_include;
plc.conf = conf;
plc.from_include = from_include;
/* Catch only the top level config file name in the structure. */
if (!conf->rcfile)
conf->rcfile = strdup(file);
return lxc_file_for_each_line_mmap(file, parse_line, &c);
return lxc_file_for_each_line_mmap(file, parse_line, &plc);
}
int lxc_config_define_add(struct lxc_list *defines, char *arg)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment