This is a note to let you know that I've just added the patch titled

    xfrm_user: return error pointer instead of NULL

to the 3.0-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     xfrm_user-return-error-pointer-instead-of-null.patch
and it can be found in the queue-3.0 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From f356c026150463a7289d3fd9ca76b489c52abec6 Mon Sep 17 00:00:00 2001
From: Mathias Krause <[email protected]>
Date: Thu, 13 Sep 2012 11:41:26 +0000
Subject: xfrm_user: return error pointer instead of NULL


From: Mathias Krause <[email protected]>

[ Upstream commit 864745d291b5ba80ea0bd0edcbe67273de368836 ]

When dump_one_state() returns an error, e.g. because of a too small
buffer to dump the whole xfrm state, xfrm_state_netlink() returns NULL
instead of an error pointer. But its callers expect an error pointer
and therefore continue to operate on a NULL skbuff.

This could lead to a privilege escalation (execution of user code in
kernel context) if the attacker has CAP_NET_ADMIN and is able to map
address 0.

Signed-off-by: Mathias Krause <[email protected]>
Acked-by: Steffen Klassert <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
 net/xfrm/xfrm_user.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

--- a/net/xfrm/xfrm_user.c
+++ b/net/xfrm/xfrm_user.c
@@ -862,6 +862,7 @@ static struct sk_buff *xfrm_state_netlin
 {
        struct xfrm_dump_info info;
        struct sk_buff *skb;
+       int err;
 
        skb = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_ATOMIC);
        if (!skb)
@@ -872,9 +873,10 @@ static struct sk_buff *xfrm_state_netlin
        info.nlmsg_seq = seq;
        info.nlmsg_flags = 0;
 
-       if (dump_one_state(x, 0, &info)) {
+       err = dump_one_state(x, 0, &info);
+       if (err) {
                kfree_skb(skb);
-               return NULL;
+               return ERR_PTR(err);
        }
 
        return skb;


Patches currently in stable-queue which might be from [email protected] are

queue-3.0/xfrm_user-return-error-pointer-instead-of-null-2.patch
queue-3.0/xfrm_user-ensure-user-supplied-esn-replay-window-is-valid.patch
queue-3.0/xfrm_user-don-t-copy-esn-replay-window-twice-for-new-states.patch
queue-3.0/xfrm_user-fix-info-leak-in-copy_to_user_tmpl.patch
queue-3.0/xfrm_user-fix-info-leak-in-copy_to_user_auth.patch
queue-3.0/xfrm_user-return-error-pointer-instead-of-null.patch
queue-3.0/xfrm_user-fix-info-leak-in-copy_to_user_policy.patch
queue-3.0/xfrm_user-fix-info-leak-in-copy_to_user_state.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to