From 5c64c1e1ca24fe67f505ee4b7aeaef6c5d41c741 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Tue, 8 Apr 2008 14:36:49 -0700 Subject: [PATCH] kclient: parse+verify fsid in osdmap message --- src/kernel/osd_client.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/kernel/osd_client.c b/src/kernel/osd_client.c index 0120ddec5307a..3c6dd81efdb77 100644 --- a/src/kernel/osd_client.c +++ b/src/kernel/osd_client.c @@ -41,11 +41,21 @@ void ceph_osdc_handle_map(struct ceph_osd_client *osdc, struct ceph_msg *msg) __u32 epoch; struct ceph_osdmap *newmap = 0; int err; + struct ceph_fsid fsid; dout(1, "handle_map, have %u\n", osdc->osdmap ? osdc->osdmap->epoch:0); p = msg->front.iov_base; end = p + msg->front.iov_len; + /* verify fsid */ + ceph_decode_need(&p, end, sizeof(fsid), bad); + ceph_decode_64(&p, fsid.major); + ceph_decode_64(&p, fsid.minor); + if (!ceph_fsid_equal(&fsid, &osdc->client->monc.monmap->fsid)) { + derr(0, "got map with wrong fsid, ignoring\n"); + return; + } + /* incremental maps */ ceph_decode_32_safe(&p, end, nr_maps, bad); dout(10, " %d inc maps\n", nr_maps); -- 2.39.5