Browse Source

dhcpv4: fix uninitialized hostname in some ubus events

The hostname buffer is uninitialized if the client doesn't provide
DHCPV4_OPT_HOSTNAME. Use hostname from the assignment which is present if
a static lease contains the hostname or if the client provides one, and
the hostname is valid. It's also used in the ubus ipv4leases method.

Signed-off-by: Mikael Magnusson <mikma@users.sourceforge.net>
Mikael Magnusson 2 years ago
parent
commit
01b4e6046f
1 changed files with 2 additions and 2 deletions
  1. 2 2
      src/dhcpv4.c

+ 2 - 2
src/dhcpv4.c

@@ -758,7 +758,7 @@ void dhcpv4_handle_msg(void *addr, void *data, size_t len,
 #ifdef WITH_UBUS
 	if (reqmsg == DHCPV4_MSG_RELEASE)
 		ubus_bcast_dhcp_event("dhcp.release", req->chaddr, req->hlen,
-					&req->ciaddr, hostname, iface->ifname);
+					&req->ciaddr, a ? a->hostname : NULL, iface->ifname);
 #endif
 	if (reqmsg == DHCPV4_MSG_DECLINE || reqmsg == DHCPV4_MSG_RELEASE)
 		return;
@@ -915,7 +915,7 @@ void dhcpv4_handle_msg(void *addr, void *data, size_t len,
 #ifdef WITH_UBUS
 	if (msg == DHCPV4_MSG_ACK)
 		ubus_bcast_dhcp_event("dhcp.ack", req->chaddr, req->hlen, &reply.yiaddr,
-					hostname, iface->ifname);
+					a ? a->hostname : NULL, iface->ifname);
 #endif
 }