]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
xfrm_policy: Do not attempt to deleteall a socket policy
authorThomas Egerer <thomas.egerer@secunet.com>
Mon, 30 Oct 2017 18:11:45 +0000 (19:11 +0100)
committerStephen Hemminger <stephen@networkplumber.org>
Tue, 7 Nov 2017 02:12:30 +0000 (11:12 +0900)
Socket polices are added to a socket using setsockopt(2). They cannot be
deleted by iproute2. The attempt to delete them causes an error
(EINVAL).
To avoid this unnecessary error message all socket policies are skipped
in xfrm_policy_keep.

Signed-off-by: Thomas Egerer <thomas.egerer@secunet.com>
ip/xfrm_policy.c

index 0c86a52a7d6e21333cc8e10b4fe13739b4f1243c..e716a7d0fe77ab32c69517cc81b05715d1ea3409 100644 (file)
@@ -735,6 +735,10 @@ static int xfrm_policy_keep(const struct sockaddr_nl *who,
        if (!xfrm_policy_filter_match(xpinfo, ptype))
                return 0;
 
+       /* can't delete socket policies */
+       if (xpinfo->dir >= XFRM_POLICY_MAX)
+               return 0;
+
        if (xb->offset + NLMSG_LENGTH(sizeof(*xpid)) > xb->size)
                return 0;