VYPR
High severity7.5NVD Advisory· Published Jun 8, 2013· Updated Apr 29, 2026

CVE-2011-2482

CVE-2011-2482

Description

A certain Red Hat patch to the sctp_sock_migrate function in net/sctp/socket.c in the Linux kernel before 2.6.21, as used in Red Hat Enterprise Linux (RHEL) 5, allows remote attackers to cause a denial of service (NULL pointer dereference and OOPS) via a crafted SCTP packet.

Affected products

1
  • cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
    Range: <2.6.21

Patches

1
ea2bc483ff5c

[SCTP]: Fix assertion (!atomic_read(&sk->sk_rmem_alloc)) failed message

https://github.com/torvalds/linuxTsutomu FujiiApr 17, 2007via nvd-ref
1 file changed · +44 4
  • net/sctp/socket.c+44 4 modified
    @@ -5638,6 +5638,36 @@ void sctp_wait_for_close(struct sock *sk, long timeout)
     	finish_wait(sk->sk_sleep, &wait);
     }
     
    +static void sctp_sock_rfree_frag(struct sk_buff *skb)
    +{
    +	struct sk_buff *frag;
    +
    +	if (!skb->data_len)
    +		goto done;
    +
    +	/* Don't forget the fragments. */
    +	for (frag = skb_shinfo(skb)->frag_list; frag; frag = frag->next)
    +		sctp_sock_rfree_frag(frag);
    +
    +done:
    +	sctp_sock_rfree(skb);
    +}
    +
    +static void sctp_skb_set_owner_r_frag(struct sk_buff *skb, struct sock *sk)
    +{
    +	struct sk_buff *frag;
    +
    +	if (!skb->data_len)
    +		goto done;
    +
    +	/* Don't forget the fragments. */
    +	for (frag = skb_shinfo(skb)->frag_list; frag; frag = frag->next)
    +		sctp_skb_set_owner_r_frag(frag, sk);
    +
    +done:
    +	sctp_skb_set_owner_r(skb, sk);
    +}
    +
     /* Populate the fields of the newsk from the oldsk and migrate the assoc
      * and its messages to the newsk.
      */
    @@ -5692,10 +5722,10 @@ static void sctp_sock_migrate(struct sock *oldsk, struct sock *newsk,
     	sctp_skb_for_each(skb, &oldsk->sk_receive_queue, tmp) {
     		event = sctp_skb2event(skb);
     		if (event->asoc == assoc) {
    -			sctp_sock_rfree(skb);
    +			sctp_sock_rfree_frag(skb);
     			__skb_unlink(skb, &oldsk->sk_receive_queue);
     			__skb_queue_tail(&newsk->sk_receive_queue, skb);
    -			sctp_skb_set_owner_r(skb, newsk);
    +			sctp_skb_set_owner_r_frag(skb, newsk);
     		}
     	}
     
    @@ -5723,10 +5753,10 @@ static void sctp_sock_migrate(struct sock *oldsk, struct sock *newsk,
     		sctp_skb_for_each(skb, &oldsp->pd_lobby, tmp) {
     			event = sctp_skb2event(skb);
     			if (event->asoc == assoc) {
    -				sctp_sock_rfree(skb);
    +				sctp_sock_rfree_frag(skb);
     				__skb_unlink(skb, &oldsp->pd_lobby);
     				__skb_queue_tail(queue, skb);
    -				sctp_skb_set_owner_r(skb, newsk);
    +				sctp_skb_set_owner_r_frag(skb, newsk);
     			}
     		}
     
    @@ -5738,6 +5768,16 @@ static void sctp_sock_migrate(struct sock *oldsk, struct sock *newsk,
     
     	}
     
    +	sctp_skb_for_each(skb, &assoc->ulpq.reasm, tmp) {
    +		sctp_sock_rfree_frag(skb);
    +		sctp_skb_set_owner_r_frag(skb, newsk);
    +	}
    +
    +	sctp_skb_for_each(skb, &assoc->ulpq.lobby, tmp) {
    +		sctp_sock_rfree_frag(skb);
    +		sctp_skb_set_owner_r_frag(skb, newsk);
    +	}
    +
     	/* Set the type of socket to indicate that it is peeled off from the
     	 * original UDP-style socket or created with the accept() call on a
     	 * TCP-style socket..
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

5

News mentions

0

No linked articles in our index yet.