X-Git-Url: https://git.karo-electronics.de/?a=blobdiff_plain;f=net%2Fcompat.c;h=f7bd286a82807148bed32622e5de2f975450c877;hb=f5f321c43150cb4db8f342c8479c6fbdbe20b338;hp=94d3d5e978832cba85b7212988f735780ceed9dd;hpb=39ed853a2447ce85cf29b3c0357998ff968beeb5;p=karo-tx-linux.git diff --git a/net/compat.c b/net/compat.c index 94d3d5e97883..f7bd286a8280 100644 --- a/net/compat.c +++ b/net/compat.c @@ -49,6 +49,13 @@ ssize_t get_compat_msghdr(struct msghdr *kmsg, __get_user(kmsg->msg_controllen, &umsg->msg_controllen) || __get_user(kmsg->msg_flags, &umsg->msg_flags)) return -EFAULT; + + if (!uaddr) + kmsg->msg_namelen = 0; + + if (kmsg->msg_namelen < 0) + return -EINVAL; + if (kmsg->msg_namelen > sizeof(struct sockaddr_storage)) kmsg->msg_namelen = sizeof(struct sockaddr_storage); kmsg->msg_control = compat_ptr(tmp3);