summaryrefslogtreecommitdiffhomepage
path: root/src/ubus.c
diff options
context:
space:
mode:
authorHans Dedecker <dedeckeh@gmail.com>2017-04-25 14:50:18 +0200
committerHans Dedecker <dedeckeh@gmail.com>2017-04-25 15:00:29 +0200
commitc0e9dbfd8d49077d07d25a59662220d206943572 (patch)
tree45d91492e1a6e5324e1dc7c48b9702c8acecc914 /src/ubus.c
parent570069d3e16e7679676ceeb1e973c1342a2f2684 (diff)
ubus: don't segfault when there're no leases
Signed-off-by: Hans Dedecker <dedeckeh@gmail.com>
Diffstat (limited to 'src/ubus.c')
-rw-r--r--src/ubus.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/ubus.c b/src/ubus.c
index 5786318..30f7e93 100644
--- a/src/ubus.c
+++ b/src/ubus.c
@@ -27,7 +27,7 @@ static int handle_dhcpv4_leases(struct ubus_context *ctx, _unused struct ubus_ob
a = blobmsg_open_table(&b, "device");
list_for_each_entry(iface, &interfaces, head) {
- if (iface->dhcpv4 != RELAYD_SERVER)
+ if (iface->dhcpv4 != RELAYD_SERVER || iface->dhcpv4_assignments.next == NULL)
continue;
void *i = blobmsg_open_table(&b, iface->ifname);
@@ -106,7 +106,7 @@ static int handle_dhcpv6_leases(_unused struct ubus_context *ctx, _unused struct
a = blobmsg_open_table(&b, "device");
list_for_each_entry(iface, &interfaces, head) {
- if (iface->dhcpv6 != RELAYD_SERVER)
+ if (iface->dhcpv6 != RELAYD_SERVER || iface->ia_assignments.next == NULL)
continue;
void *i = blobmsg_open_table(&b, iface->ifname);
@@ -117,7 +117,7 @@ static int handle_dhcpv6_leases(_unused struct ubus_context *ctx, _unused struct
list_for_each_entry(a, &iface->ia_assignments, head) {
if (a == border || (!INFINITE_VALID(a->valid_until) &&
- a->valid_until < now))
+ a->valid_until < now))
continue;
void *m, *l = blobmsg_open_table(&b, NULL);