mirror of
git://git.yoctoproject.org/linux-yocto.git
synced 2026-01-27 12:47:24 +01:00
libceph: prevent potential out-of-bounds writes in handle_auth_session_key()
The len field originates from untrusted network packets. Boundary checks have been added to prevent potential out-of-bounds writes when decrypting the connection secret or processing service tickets. [ idryomov: changelog ] Cc: stable@vger.kernel.org Signed-off-by: ziming zhang <ezrakiez@gmail.com> Reviewed-by: Ilya Dryomov <idryomov@gmail.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:
parent
ec3797f043
commit
7fce830ecd
|
|
@ -631,6 +631,7 @@ static int handle_auth_session_key(struct ceph_auth_client *ac, u64 global_id,
|
|||
|
||||
/* connection secret */
|
||||
ceph_decode_32_safe(p, end, len, e_inval);
|
||||
ceph_decode_need(p, end, len, e_inval);
|
||||
dout("%s connection secret blob len %d\n", __func__, len);
|
||||
if (len > 0) {
|
||||
dp = *p + ceph_x_encrypt_offset();
|
||||
|
|
@ -648,6 +649,7 @@ static int handle_auth_session_key(struct ceph_auth_client *ac, u64 global_id,
|
|||
|
||||
/* service tickets */
|
||||
ceph_decode_32_safe(p, end, len, e_inval);
|
||||
ceph_decode_need(p, end, len, e_inval);
|
||||
dout("%s service tickets blob len %d\n", __func__, len);
|
||||
if (len > 0) {
|
||||
ret = ceph_x_proc_ticket_reply(ac, &th->session_key,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user