diff --git a/net/packet/af_packet.c b/net/packet/af_packet.c index 8489beff5c25c971067f38833ed4a790a98dd86e..ea81ccf3c7d6a53095b4922329c25b566d5b5940 100644 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c @@ -3836,6 +3836,8 @@ static int packet_getsockopt(struct socket *sock, int level, int optname, case PACKET_HDRLEN: if (len > sizeof(int)) len = sizeof(int); + if (len < sizeof(int)) + return -EINVAL; if (copy_from_user(&val, optval, len)) return -EFAULT; switch (val) {