<div dir="ltr"><div dir="ltr">Just a follow-up on this patch.<br><br>One concrete valid case affected by this is a Release Reply. RFC 9915<br>section 18.3.7 requires a server with no binding for an IA to return<br>the IA containing a NoBinding Status Code and no other options.<br><br>An IA_NA has a 12-byte fixed part, and a Status Code with an empty<br>status message occupies 6 bytes including its option header, so such<br>an IA_NA can have option-len == 18. The current option_len < 24 check<br>rejects it before parsing the status code.<br><br>RFC 9915 section 21.4 specifies IA_NA option-len as 12 plus the length<br>of IA_NA-options. The value 24 instead corresponds to the fixed part<br>of the IA Address option data before its suboptions (section 21.6).<br><br>Would you consider applying the patch?<br></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">пн, 22 июн. 2026 г. в 13:54, Mikhail Dmitrichenko <<a href="mailto:m.dmitrichenko222@gmail.com">m.dmitrichenko222@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">The DHCPv6 IA_NA option has a 12 byte fixed header made up of IAID, T1 <br>
and T2. dhcp_release6 currently treats the fixed part as 24 bytes, <br>
which is the size of an IAADDR payload instead.<br>
<br>
This makes the parser skip past the start of the IA_NA suboption area <br>
and reject valid IA_NA options shorter than 24 bytes. Parse IA_NA <br>
suboptions after the 12 byte fixed part and only require that minimum <br>
length before subtracting it from option_len.<br>
<br>
Signed-off-by: Mikhail Dmitrichenko <<a href="mailto:m.dmitrichenko222@gmail.com" target="_blank">m.dmitrichenko222@gmail.com</a>><br>
---<br>
contrib/lease-tools/dhcp_release6.c | 4 ++--<br>
1 file changed, 2 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/contrib/lease-tools/dhcp_release6.c b/contrib/lease-tools/dhcp_release6.c<br>
index bbdd412..a795a35 100644<br>
--- a/contrib/lease-tools/dhcp_release6.c<br>
+++ b/contrib/lease-tools/dhcp_release6.c<br>
@@ -339,10 +339,10 @@ int16_t parse_packet(char* buf, size_t len)<br>
<br>
if (option_type == IA_NA )<br>
{<br>
- if (option_len < 24)<br>
+ if (option_len < 12)<br>
return UNSPEC_FAIL;<br>
<br>
- uint16_t result = parse_iana_suboption(buf + current_pos +24, option_len -24);<br>
+ uint16_t result = parse_iana_suboption(buf + current_pos + 12, option_len - 12);<br>
if (result)<br>
return result;<br>
}<br>
-- <br>
2.54.0.windows.1<br>
<br>
</blockquote></div></div>