Skip to content

Commit

Permalink
bootconfig: Add more parse error messages
Browse files Browse the repository at this point in the history
Add more error messages for following cases.
 - Exceeding max number of nodes
 - Config tree data is empty (e.g. comment only)
 - Config data is empty or exceeding max size
 - bootconfig is already initialized

Link: http://lkml.kernel.org/r/158091060401.27924.9024818742827122764.stgit@devnote2

Signed-off-by: Masami Hiramatsu <[email protected]>
Signed-off-by: Steven Rostedt (VMware) <[email protected]>
  • Loading branch information
mhiramat authored and rostedt committed Feb 5, 2020
1 parent e241d14 commit 597c0e3
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions lib/bootconfig.c
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,8 @@ static struct xbc_node * __init xbc_add_sibling(char *data, u32 flag)
sib->next = xbc_node_index(node);
}
}
}
} else
xbc_parse_error("Too many nodes", data);

return node;
}
Expand Down Expand Up @@ -657,8 +658,10 @@ static int __init xbc_verify_tree(void)
struct xbc_node *n, *m;

/* Empty tree */
if (xbc_node_num == 0)
if (xbc_node_num == 0) {
xbc_parse_error("Empty config", xbc_data);
return -ENOENT;
}

for (i = 0; i < xbc_node_num; i++) {
if (xbc_nodes[i].next > xbc_node_num) {
Expand Down Expand Up @@ -732,12 +735,17 @@ int __init xbc_init(char *buf)
char *p, *q;
int ret, c;

if (xbc_data)
if (xbc_data) {
pr_err("Error: bootconfig is already initialized.\n");
return -EBUSY;
}

ret = strlen(buf);
if (ret > XBC_DATA_MAX - 1 || ret == 0)
if (ret > XBC_DATA_MAX - 1 || ret == 0) {
pr_err("Error: Config data is %s.\n",
ret ? "too big" : "empty");
return -ERANGE;
}

xbc_data = buf;
xbc_data_size = ret + 1;
Expand Down

0 comments on commit 597c0e3

Please sign in to comment.