All of lore.kernel.org
 help / color / mirror / Atom feed
* [bug report] ceph: decode interval_sets for delegated inos
@ 2024-12-03  8:19 Dan Carpenter
  2024-12-03  8:25 ` Dan Carpenter
  2024-12-03 17:06 ` Alex Elder
  0 siblings, 2 replies; 8+ messages in thread
From: Dan Carpenter @ 2024-12-03  8:19 UTC (permalink / raw)
  To: Jeff Layton; +Cc: ceph-devel

Hello Jeff Layton,

Commit d48464878708 ("ceph: decode interval_sets for delegated inos")
from Nov 15, 2019 (linux-next), leads to the following Smatch static
checker warning:

	fs/ceph/mds_client.c:644 ceph_parse_deleg_inos()
	warn: potential user controlled sizeof overflow 'sets * 2 * 8' '0-u32max * 8'

fs/ceph/mds_client.c
    637 static int ceph_parse_deleg_inos(void **p, void *end,
    638                                  struct ceph_mds_session *s)
    639 {
    640         u32 sets;
    641 
    642         ceph_decode_32_safe(p, end, sets, bad);
                                            ^^^^
set to user data here.

    643         if (sets)
--> 644                 ceph_decode_skip_n(p, end, sets * 2 * sizeof(__le64), bad);
                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^
This is safe on 64bit but on 32bit systems it can integer overflow/wrap.

    645         return 0;
    646 bad:
    647         return -EIO;
    648 }
    649 
    650 u64 ceph_get_deleg_ino(struct ceph_mds_session *s)
    651 {
    652         return 0;
    653 }
    654 

regards,
dan carpenter

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2024-12-04 17:05 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-12-03  8:19 [bug report] ceph: decode interval_sets for delegated inos Dan Carpenter
2024-12-03  8:25 ` Dan Carpenter
2024-12-03 14:07   ` Jeff Layton
2024-12-03 17:06 ` Alex Elder
2024-12-03 18:29   ` Dan Carpenter
2024-12-04 12:50     ` Alex Markuze
2024-12-04 13:12       ` Alex Markuze
2024-12-04 17:05         ` Dan Carpenter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.