Fix sctp privilege elevation (CVE-2006-3745)
sctp_make_abort_user() now takes the msg_len along with the msg so that we don't have to recalculate the bytes in iovec. It also uses memcpy_fromiovec() so that we don't go beyond the length allocated. It is good to have this fix even if verify_iovec() is fixed to return error on overflow. Signed-off-by: Sridhar Samudrala <sri@us.ibm.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
4c4f4930a6
commit
96ec9da385
@@ -405,19 +405,6 @@ static inline int sctp_list_single_entry(struct list_head *head)
|
||||
return ((head->next != head) && (head->next == head->prev));
|
||||
}
|
||||
|
||||
/* Calculate the size (in bytes) occupied by the data of an iovec. */
|
||||
static inline size_t get_user_iov_size(struct iovec *iov, int iovlen)
|
||||
{
|
||||
size_t retval = 0;
|
||||
|
||||
for (; iovlen > 0; --iovlen) {
|
||||
retval += iov->iov_len;
|
||||
iov++;
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
/* Generate a random jitter in the range of -50% ~ +50% of input RTO. */
|
||||
static inline __s32 sctp_jitter(__u32 rto)
|
||||
{
|
||||
|
||||
@@ -221,8 +221,7 @@ struct sctp_chunk *sctp_make_abort_no_data(const struct sctp_association *,
|
||||
const struct sctp_chunk *,
|
||||
__u32 tsn);
|
||||
struct sctp_chunk *sctp_make_abort_user(const struct sctp_association *,
|
||||
const struct sctp_chunk *,
|
||||
const struct msghdr *);
|
||||
const struct msghdr *, size_t msg_len);
|
||||
struct sctp_chunk *sctp_make_abort_violation(const struct sctp_association *,
|
||||
const struct sctp_chunk *,
|
||||
const __u8 *,
|
||||
|
||||
Reference in New Issue
Block a user