projects
/
project
/
odhcpd.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
a9739e6
)
Avoid segfaults when parsing configuration
author
Steven Barth
<steven@midlink.org>
Tue, 15 Oct 2013 07:31:33 +0000
(09:31 +0200)
committer
Steven Barth
<steven@midlink.org>
Tue, 15 Oct 2013 07:31:33 +0000
(09:31 +0200)
src/config.c
patch
|
blob
|
history
diff --git
a/src/config.c
b/src/config.c
index
9228a37
..
e455965
100644
(file)
--- a/
src/config.c
+++ b/
src/config.c
@@
-260,7
+260,10
@@
int config_parse_interface(struct blob_attr *b, const char *name, bool overwrite
blobmsg_parse(iface_attrs, IFACE_ATTR_MAX, tb, blob_data(b), blob_len(b));
if (tb[IFACE_ATTR_INTERFACE])
blobmsg_parse(iface_attrs, IFACE_ATTR_MAX, tb, blob_data(b), blob_len(b));
if (tb[IFACE_ATTR_INTERFACE])
- name = blobmsg_data(tb[IFACE_ATTR_INTERFACE]);
+ name = blobmsg_get_string(tb[IFACE_ATTR_INTERFACE]);
+
+ if (!name)
+ return -1;
struct interface *iface = get_interface(name);
if (!iface) {
struct interface *iface = get_interface(name);
if (!iface) {
@@
-281,6
+284,9
@@
int config_parse_interface(struct blob_attr *b, const char *name, bool overwrite
else if ((c = tb[IFACE_ATTR_NETWORKID]))
ifname = blobmsg_get_string(c);
else if ((c = tb[IFACE_ATTR_NETWORKID]))
ifname = blobmsg_get_string(c);
+ if (!ifname)
+ return -1;
+
strncpy(iface->ifname, ifname, sizeof(iface->ifname) - 1);
iface->inuse = true;
strncpy(iface->ifname, ifname, sizeof(iface->ifname) - 1);
iface->inuse = true;