mirror of
https://passt.top/passt
synced 2025-06-06 07:56:38 +02:00
dhcp: Add option code byte in calculation for OPT_MAX boundary check
Otherwise we'll limit messages to 577 bytes, instead of 576 bytes as intended: $ fqdn="thirtytwocharactersforeachlabel.thirtytwocharactersforeachlabel.thirtytwocharactersforeachlabel.thirtytwocharactersforeachlabel.thirtytwocharactersforeachlabel.thirtytwocharactersforeachlabel.thirtytwocharactersforeachlabel.then_make_it_251_with_this" $ hostname="__eighteen_bytes__" $ ./pasta --fqdn ${fqdn} -H ${hostname} -p dhcp.pcap -- /sbin/dhclient -4 Saving packet capture to dhcp.pcap $ tshark -r dhcp.pcap -V -Y 'dhcp.option.value == 5' | grep "Total Length" Total Length: 577 This was hidden by the issue fixed by commitbcc4908c2b
("dhcp Remove option 255 length byte") until now. Fixes:31e8109a86
("dhcp, dhcpv6: Add hostname and client fqdn ops") Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Reviewed-by: Enrique Llorente <ellorent@redhat.com> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
183bedf478
commit
16553c8280
1 changed files with 1 additions and 1 deletions
2
dhcp.c
2
dhcp.c
|
@ -143,7 +143,7 @@ static bool fill_one(struct msg *m, int o, int *offset)
|
|||
size_t slen = opts[o].slen;
|
||||
|
||||
/* If we don't have space to write the option, then just skip */
|
||||
if (*offset + 1 /* length of option */ + slen > OPT_MAX)
|
||||
if (*offset + 2 /* code and length of option */ + slen > OPT_MAX)
|
||||
return true;
|
||||
|
||||
m->o[*offset] = o;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue