mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
dccp: check ccid before dereferencing
commit 276bdb82de upstream.
ccid_hc_rx_getsockopt() and ccid_hc_tx_getsockopt() might be called with
a NULL ccid pointer leading to a NULL pointer dereference. This could
lead to a privilege escalation if the attacker is able to map page 0 and
prepare it with a fake ccid_ops pointer.
Signed-off-by: Mathias Krause <minipli@googlemail.com>
Cc: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
2b6007fbac
commit
a629a20ed2
@@ -246,7 +246,7 @@ static inline int ccid_hc_rx_getsockopt(struct ccid *ccid, struct sock *sk,
|
||||
u32 __user *optval, int __user *optlen)
|
||||
{
|
||||
int rc = -ENOPROTOOPT;
|
||||
if (ccid->ccid_ops->ccid_hc_rx_getsockopt != NULL)
|
||||
if (ccid != NULL && ccid->ccid_ops->ccid_hc_rx_getsockopt != NULL)
|
||||
rc = ccid->ccid_ops->ccid_hc_rx_getsockopt(sk, optname, len,
|
||||
optval, optlen);
|
||||
return rc;
|
||||
@@ -257,7 +257,7 @@ static inline int ccid_hc_tx_getsockopt(struct ccid *ccid, struct sock *sk,
|
||||
u32 __user *optval, int __user *optlen)
|
||||
{
|
||||
int rc = -ENOPROTOOPT;
|
||||
if (ccid->ccid_ops->ccid_hc_tx_getsockopt != NULL)
|
||||
if (ccid != NULL && ccid->ccid_ops->ccid_hc_tx_getsockopt != NULL)
|
||||
rc = ccid->ccid_ops->ccid_hc_tx_getsockopt(sk, optname, len,
|
||||
optval, optlen);
|
||||
return rc;
|
||||
|
||||
Reference in New Issue
Block a user