Fix memory corruption when reloading static leases
authorSteven Barth <steven@midlink.org>
Sat, 18 Jan 2014 09:55:56 +0000 (10:55 +0100)
committerSteven Barth <steven@midlink.org>
Sat, 18 Jan 2014 09:55:56 +0000 (10:55 +0100)
src/config.c

index 05eb8248c99cafc2db1b84b04e286ca04c8303e6..8e42ffa5ce75fccca09d36ad98ea0564717ee8f8 100644 (file)
@@ -517,8 +517,8 @@ static int set_interface(struct uci_section *s)
 void odhcpd_reload(void)
 {
        struct uci_context *uci = uci_alloc_context();
-       struct lease *l;
-       list_for_each_entry(l, &leases, head) {
+       while (!list_empty(&leases)) {
+               struct lease *l = list_first_entry(&leases, struct lease, head);
                list_del(&l->head);
                free(l->duid);
                free(l);