From: adilger Date: Mon, 6 Feb 2006 20:22:45 +0000 (+0000) Subject: Branch b_release_1_4_6 X-Git-Tag: v1_7_100~1^103~4^2~52 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=98c50fcab37d307059596c8c2b4233fd3bfc490f;p=fs%2Flustre-release.git Branch b_release_1_4_6 Don't dereference data=NULL in case of old liblustre client connections. b=8007 --- diff --git a/lustre/ldlm/ldlm_lib.c b/lustre/ldlm/ldlm_lib.c index 0bb67db..c98693a 100644 --- a/lustre/ldlm/ldlm_lib.c +++ b/lustre/ldlm/ldlm_lib.c @@ -588,17 +588,26 @@ int target_handle_connect(struct ptlrpc_request *req, svc_handler_t handler) GOTO(out, rc); if (lustre_msg_get_op_flags(req->rq_reqmsg) & MSG_CONNECT_LIBCLIENT) { - if (!data || (data->ocd_version < LUSTRE_VERSION_CODE - - LUSTRE_VERSION_ALLOWED_OFFSET)) { + if (!data) { + DEBUG_REQ(D_INFO, req, "Refusing old (unversioned) " + "libclient connection attempt\n"); + GOTO(out, rc = -EPROTO); + } else if (data->ocd_version < LUSTRE_VERSION_CODE - + LUSTRE_VERSION_ALLOWED_OFFSET) { DEBUG_REQ(D_INFO, req, "Refusing old (%d.%d.%d.%d) " "libclient connection attempt\n", OBD_OCD_VERSION_MAJOR(data->ocd_version), OBD_OCD_VERSION_MINOR(data->ocd_version), OBD_OCD_VERSION_PATCH(data->ocd_version), OBD_OCD_VERSION_FIX(data->ocd_version)); - data = lustre_msg_buf(req->rq_repmsg, 0, sizeof(*data)); - data->ocd_connect_flags = OBD_CONNECT_VERSION; - data->ocd_version = LUSTRE_VERSION_CODE; + data = lustre_msg_buf(req->rq_repmsg, 0, + offsetof(typeof(*data), + ocd_version) + + sizeof(data->ocd_version)); + if (data) { + data->ocd_connect_flags = OBD_CONNECT_VERSION; + data->ocd_version = LUSTRE_VERSION_CODE; + } GOTO(out, rc = -EPROTO); } }