On Mon, Nov 30, 2015 at 03:38:23PM +0800, Jason Wang wrote:
> Backends could provide a packet whose length is greater than buffer
> size. Check for this and truncate the packet to avoid rx buffer
> overflow in this case.
> 
> Cc: Prasad J Pandit <p...@fedoraproject.org>
> Cc: qemu-sta...@nongnu.org
> Signed-off-by: Jason Wang <jasow...@redhat.com>

Reviewed-by: Michael S. Tsirkin <m...@redhat.com>

> ---
>  hw/net/pcnet.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/hw/net/pcnet.c b/hw/net/pcnet.c
> index 309c40b..1f4a3db 100644
> --- a/hw/net/pcnet.c
> +++ b/hw/net/pcnet.c
> @@ -1064,6 +1064,12 @@ ssize_t pcnet_receive(NetClientState *nc, const 
> uint8_t *buf, size_t size_)
>              int pktcount = 0;
>  
>              if (!s->looptest) {
> +                if (size > 4092) {
> +#ifdef PCNET_DEBUG_RMD
> +                    fprintf(stderr, "pcnet: truncates rx packet.\n");
> +#endif
> +                    size = 4092;
> +                }
>                  memcpy(src, buf, size);
>                  /* no need to compute the CRC */
>                  src[size] = 0;
> -- 
> 2.5.0
> 

Reply via email to