Re: [PATCH 3/3] net: emaclite: fix handling for IP packets with specific lengths
On 8/6/22 19:35, Ramon Fried wrote: On Wed, Jul 13, 2022 at 5:02 PM Samuel Obuch wrote: The maximum length is capped similarly to the emaclite_send function. Avoid integer underflow for values of ip->ip_len < 30, the minimum length of an IP packet is 21 bytes. Signed-off-by: Samuel Obuch --- drivers/net/xilinx_emaclite.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/xilinx_emaclite.c b/drivers/net/xilinx_emaclite.c index de7a2dee0b..21c450ec46 100644 --- a/drivers/net/xilinx_emaclite.c +++ b/drivers/net/xilinx_emaclite.c @@ -518,6 +518,8 @@ try_again: length = ntohs(ip->ip_len); length += ETHER_HDR_SIZE + ETH_FCS_LEN; debug("IP Packet %x\n", length); + if (length > PKTSIZE) + length = PKTSIZE; break; default: debug("Other Packet\n"); @@ -526,7 +528,7 @@ try_again: } /* Read the rest of the packet which is longer then first read */ - if (length != first_read) + if (length > first_read) xemaclite_alignedread(addr + first_read, etherrxbuff + first_read, length - first_read); -- 2.31.1 + Michal This looks good. Reviewed-by: Michal Simek Thanks, Michal
Re: [PATCH 3/3] net: emaclite: fix handling for IP packets with specific lengths
On Wed, Jul 13, 2022 at 5:02 PM Samuel Obuch wrote: > > The maximum length is capped similarly to the emaclite_send function. > Avoid integer underflow for values of ip->ip_len < 30, the minimum > length of an IP packet is 21 bytes. > > Signed-off-by: Samuel Obuch > --- > drivers/net/xilinx_emaclite.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/xilinx_emaclite.c b/drivers/net/xilinx_emaclite.c > index de7a2dee0b..21c450ec46 100644 > --- a/drivers/net/xilinx_emaclite.c > +++ b/drivers/net/xilinx_emaclite.c > @@ -518,6 +518,8 @@ try_again: > length = ntohs(ip->ip_len); > length += ETHER_HDR_SIZE + ETH_FCS_LEN; > debug("IP Packet %x\n", length); > + if (length > PKTSIZE) > + length = PKTSIZE; > break; > default: > debug("Other Packet\n"); > @@ -526,7 +528,7 @@ try_again: > } > > /* Read the rest of the packet which is longer then first read */ > - if (length != first_read) > + if (length > first_read) > xemaclite_alignedread(addr + first_read, > etherrxbuff + first_read, > length - first_read); > -- > 2.31.1 > + Michal
[PATCH 3/3] net: emaclite: fix handling for IP packets with specific lengths
The maximum length is capped similarly to the emaclite_send function. Avoid integer underflow for values of ip->ip_len < 30, the minimum length of an IP packet is 21 bytes. Signed-off-by: Samuel Obuch --- drivers/net/xilinx_emaclite.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/xilinx_emaclite.c b/drivers/net/xilinx_emaclite.c index de7a2dee0b..21c450ec46 100644 --- a/drivers/net/xilinx_emaclite.c +++ b/drivers/net/xilinx_emaclite.c @@ -518,6 +518,8 @@ try_again: length = ntohs(ip->ip_len); length += ETHER_HDR_SIZE + ETH_FCS_LEN; debug("IP Packet %x\n", length); + if (length > PKTSIZE) + length = PKTSIZE; break; default: debug("Other Packet\n"); @@ -526,7 +528,7 @@ try_again: } /* Read the rest of the packet which is longer then first read */ - if (length != first_read) + if (length > first_read) xemaclite_alignedread(addr + first_read, etherrxbuff + first_read, length - first_read); -- 2.31.1