Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=aef21785995778f710a60b563e03bf53ba455a47
Commit:     aef21785995778f710a60b563e03bf53ba455a47
Parent:     cf86314cb7460423b0b7e611edad80a52dc90d10
Author:     Herbert Xu <[EMAIL PROTECTED]>
AuthorDate: Thu Dec 13 09:30:59 2007 -0800
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Mon Jan 28 14:57:54 2008 -0800

    [IPSEC]: Fix zero return value in xfrm_lookup on error
    
    Further testing shows that my ICMP relookup patch can cause xfrm_lookup
    to return zero on error which isn't very nice since it leads to the caller
    dying on null pointer dereference.  The bug is due to not setting err
    to ENOENT just before we leave xfrm_lookup in case of no policy.
    
    This patch moves the err setting to where it should be.
    
    Signed-off-by: Herbert Xu <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 net/xfrm/xfrm_policy.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index a83b5e1..8023a3c 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -1469,8 +1469,6 @@ restart:
                        goto dropdst;
        }
 
-       err = -ENOENT;
-
        if (!policy) {
                /* To accelerate a bit...  */
                if ((dst_orig->flags & DST_NOXFRM) ||
@@ -1492,6 +1490,7 @@ restart:
        npols ++;
        xfrm_nr += pols[0]->xfrm_nr;
 
+       err = -ENOENT;
        if ((flags & XFRM_LOOKUP_ICMP) && !(policy->flags & XFRM_POLICY_ICMP))
                goto error;
 
@@ -1657,6 +1656,7 @@ dropdst:
        return err;
 
 nopol:
+       err = -ENOENT;
        if (flags & XFRM_LOOKUP_ICMP)
                goto dropdst;
        return 0;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to