Whamcloud - gitweb
LU-1434 utils: Add build functionality for wireshark and Lustre/LNet plugins
[fs/lustre-release.git] / lnet / selftest / framework.c
index d4ec74d..506010e 100644 (file)
@@ -26,6 +26,8 @@
 /*
  * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
+ *
+ * Copyright (c) 2012, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -285,7 +287,7 @@ sfw_init_session(sfw_session_t *sn, lst_sid_t sid,
         cfs_atomic_set(&sn->sn_refcount, 1);        /* +1 for caller */
         cfs_atomic_set(&sn->sn_brw_errors, 0);
         cfs_atomic_set(&sn->sn_ping_errors, 0);
-        strncpy(&sn->sn_name[0], name, LST_NAME_SIZE);
+       strlcpy(&sn->sn_name[0], name, sizeof(sn->sn_name));
 
         sn->sn_timer_active = 0;
         sn->sn_id           = sid;
@@ -436,6 +438,7 @@ sfw_make_session(srpc_mksn_reqst_t *request, srpc_mksn_reply_t *reply)
        sfw_session_t *sn = sfw_data.fw_session;
        srpc_msg_t    *msg = container_of(request, srpc_msg_t,
                                          msg_body.mksn_reqst);
+       int            cplen = 0;
 
         if (request->mksn_sid.ses_nid == LNET_NID_ANY) {
                 reply->mksn_sid = (sn == NULL) ? LST_INVALID_SID : sn->sn_id;
@@ -455,7 +458,10 @@ sfw_make_session(srpc_mksn_reqst_t *request, srpc_mksn_reply_t *reply)
 
                 if (!request->mksn_force) {
                         reply->mksn_status = EBUSY;
-                        strncpy(&reply->mksn_name[0], &sn->sn_name[0], LST_NAME_SIZE);
+                       cplen = strlcpy(&reply->mksn_name[0], &sn->sn_name[0],
+                                       sizeof(reply->mksn_name));
+                       if (cplen >= sizeof(reply->mksn_name))
+                               return -E2BIG;
                         return 0;
                 }
         }
@@ -541,7 +547,9 @@ sfw_debug_session (srpc_debug_reqst_t *request, srpc_debug_reply_t *reply)
         reply->dbg_status  = 0;
         reply->dbg_sid     = sn->sn_id;      
         reply->dbg_timeout = sn->sn_timeout;
-        strncpy(reply->dbg_name, &sn->sn_name[0], LST_NAME_SIZE);
+       if (strlcpy(reply->dbg_name, &sn->sn_name[0], sizeof(reply->dbg_name))
+           >= sizeof(reply->dbg_name))
+               return -E2BIG;
 
         return 0;
 }
@@ -571,12 +579,16 @@ sfw_test_buffers(sfw_test_instance_t *tsi)
 int
 sfw_load_test(struct sfw_test_instance *tsi)
 {
-       struct sfw_test_case    *tsc = sfw_find_test_case(tsi->tsi_service);
-       struct srpc_service     *svc = tsc->tsc_srv_service;
-       int                     nbuf = sfw_test_buffers(tsi);
+       struct sfw_test_case    *tsc;
+       struct srpc_service     *svc;
+       int                     nbuf;
        int                     rc;
 
+       LASSERT(tsi != NULL);
+       tsc = sfw_find_test_case(tsi->tsi_service);
+       nbuf = sfw_test_buffers(tsi);
        LASSERT(tsc != NULL);
+       svc = tsc->tsc_srv_service;
 
        if (tsi->tsi_is_client) {
                tsi->tsi_ops = tsc->tsc_cli_ops;