← Commit list

f8fcc184b

Denys Vlasenko
Denys Vlasenko
2010-04-04
FAILED Duration: 27s

Subject

udhcpd: note missing sanity checks on INFORM message handling

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

networking/udhcp/dhcpd.c+13 -1
@@ -247,11 +247,23 @@ static void send_inform(struct dhcp_packet *oldpacket)
{
struct dhcp_packet packet;
- /* "The server responds to a DHCPINFORM message by sending a DHCPACK
+ /* "If a client has obtained a network address through some other means
+ * (e.g., manual configuration), it may use a DHCPINFORM request message
+ * to obtain other local configuration parameters. Servers receiving a
+ * DHCPINFORM message construct a DHCPACK message with any local
+ * configuration parameters appropriate for the client without:
+ * allocating a new address, checking for an existing binding, filling
+ * in 'yiaddr' or including lease time parameters. The servers SHOULD
+ * unicast the DHCPACK reply to the address given in the 'ciaddr' field
+ * of the DHCPINFORM message.
+ * ...
+ * The server responds to a DHCPINFORM message by sending a DHCPACK
* message directly to the address given in the 'ciaddr' field
* of the DHCPINFORM message. The server MUST NOT send a lease
* expiration time to the client and SHOULD NOT fill in 'yiaddr'."
*/
+//TODO: do a few sanity checks: is ciaddr set?
+//Better yet: is ciaddr == IP source addr?
init_packet(&packet, oldpacket, DHCPACK);
add_server_options(&packet);