diff options
Diffstat (limited to 'net/core/neighbour.c')
| -rw-r--r-- | net/core/neighbour.c | 7 | 
1 files changed, 6 insertions, 1 deletions
diff --git a/net/core/neighbour.c b/net/core/neighbour.c index 41954e42a2de..5fa32c064baf 100644 --- a/net/core/neighbour.c +++ b/net/core/neighbour.c @@ -2494,11 +2494,16 @@ static int neigh_valid_dump_req(const struct nlmsghdr *nlh,  		ndm = nlmsg_data(nlh);  		if (ndm->ndm_pad1  || ndm->ndm_pad2  || ndm->ndm_ifindex || -		    ndm->ndm_state || ndm->ndm_flags || ndm->ndm_type) { +		    ndm->ndm_state || ndm->ndm_type) {  			NL_SET_ERR_MSG(extack, "Invalid values in header for neighbor dump request");  			return -EINVAL;  		} +		if (ndm->ndm_flags & ~NTF_PROXY) { +			NL_SET_ERR_MSG(extack, "Invalid flags in header for neighbor dump request"); +			return -EINVAL; +		} +  		err = nlmsg_parse_strict(nlh, sizeof(struct ndmsg), tb, NDA_MAX,  					 NULL, extack);  	} else {  |