Spotted by Coverity Scan

Signed-off-by: Fabio M. Di Nitto <fdini...@redhat.com>
---
:100644 100644 ae6c709... b49cf6f... M  cman/lib/libcman.c
 cman/lib/libcman.c |   30 +++++++++++++++---------------
 1 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/cman/lib/libcman.c b/cman/lib/libcman.c
index ae6c709..b49cf6f 100644
--- a/cman/lib/libcman.c
+++ b/cman/lib/libcman.c
@@ -82,7 +82,7 @@ static void copy_node(cman_node_t *unode, struct 
cl_cluster_node *knode)
 {
        unode->cn_nodeid = knode->node_id;
        unode->cn_member = knode->state == NODESTATE_MEMBER?1:0;
-       strcpy(unode->cn_name, knode->name);
+       strncpy(unode->cn_name, knode->name, sizeof(unode->cn_name) - 1);
        unode->cn_incarnation = knode->incarnation;
        unode->cn_jointime = knode->jointime;
 
@@ -678,14 +678,14 @@ int cman_get_node(cman_handle_t handle, int nodeid, 
cman_node_t *node)
        int status;
        VALIDATE_HANDLE(h);
 
-       if (!node || strlen(node->cn_name) > sizeof(cman_node.name))
+       if (!node || strlen(node->cn_name) >= sizeof(cman_node.name))
        {
                errno = EINVAL;
                return -1;
        }
 
        cman_node.node_id = nodeid;
-       strcpy(cman_node.name, node->cn_name);
+       strncpy(cman_node.name, node->cn_name, sizeof(cman_node.name) - 1);
        status = info_call(h, CMAN_CMD_GETNODE, &cman_node, sizeof(struct 
cl_cluster_node),
                           &cman_node, sizeof(struct cl_cluster_node));
        if (status < 0)
@@ -905,14 +905,14 @@ int cman_barrier_register(cman_handle_t handle, const 
char *name, int flags, int
        struct cl_barrier_info binfo;
        VALIDATE_HANDLE(h);
 
-       if (strlen(name) > MAX_BARRIER_NAME_LEN)
+       if (strlen(name) >= MAX_BARRIER_NAME_LEN)
        {
                errno = EINVAL;
                return -1;
        }
 
        binfo.cmd = BARRIER_CMD_REGISTER;
-       strcpy(binfo.name, name);
+       strncpy(binfo.name, name, sizeof(binfo.name) - 1);
        binfo.arg = nodes;
        binfo.flags = flags;
 
@@ -926,14 +926,14 @@ int cman_barrier_change(cman_handle_t handle, const char 
*name, int flags, int a
        struct cl_barrier_info binfo;
        VALIDATE_HANDLE(h);
 
-       if (strlen(name) > MAX_BARRIER_NAME_LEN)
+       if (strlen(name) >= MAX_BARRIER_NAME_LEN)
        {
                errno = EINVAL;
                return -1;
        }
 
        binfo.cmd = BARRIER_CMD_CHANGE;
-       strcpy(binfo.name, name);
+       strncpy(binfo.name, name, sizeof(binfo.name) - 1);
        binfo.arg = arg;
        binfo.flags = flags;
 
@@ -947,14 +947,14 @@ int cman_barrier_wait(cman_handle_t handle, const char 
*name)
        struct cl_barrier_info binfo;
        VALIDATE_HANDLE(h);
 
-       if (strlen(name) > MAX_BARRIER_NAME_LEN)
+       if (strlen(name) >= MAX_BARRIER_NAME_LEN)
        {
                errno = EINVAL;
                return -1;
        }
 
        binfo.cmd = BARRIER_CMD_WAIT;
-       strcpy(binfo.name, name);
+       strncpy(binfo.name, name, sizeof(binfo.name) - 1);
 
        return info_call(h, CMAN_CMD_BARRIER, &binfo, sizeof(binfo), NULL, 0);
 }
@@ -965,14 +965,14 @@ int cman_barrier_delete(cman_handle_t handle, const char 
*name)
        struct cl_barrier_info binfo;
        VALIDATE_HANDLE(h);
 
-       if (strlen(name) > MAX_BARRIER_NAME_LEN)
+       if (strlen(name) >= MAX_BARRIER_NAME_LEN)
        {
                errno = EINVAL;
                return -1;
        }
 
        binfo.cmd = BARRIER_CMD_DELETE;
-       strcpy(binfo.name, name);
+       strncpy(binfo.name, name, sizeof(binfo.name) - 1);
 
        return info_call(h, CMAN_CMD_BARRIER, &binfo, sizeof(binfo), NULL, 0);
 }
@@ -1019,7 +1019,7 @@ static int cman_set_quorum_device(cman_handle_t handle,
        VALIDATE_HANDLE(h);
 
        memcpy(buf, &votes, sizeof(int));
-       strcpy(buf+sizeof(int), name);
+       strncpy(buf+sizeof(int), name, strlen(name)+1 + sizeof(int) - 1);
        return info_call(h, ops, buf, strlen(name)+1+sizeof(int), NULL, 0);
 }
 
@@ -1059,7 +1059,7 @@ int cman_get_quorum_device(cman_handle_t handle, struct 
cman_qdev_info *info)
        cman_node.node_id = CLUSTER_GETNODE_QUORUMDEV;
        ret = info_call(h, CMAN_CMD_GETNODE, &cman_node, sizeof(cman_node), 
&cman_node, sizeof(cman_node));
        if (!ret) {
-               strcpy(info->qi_name, cman_node.name);
+               strncpy(info->qi_name, cman_node.name, sizeof(info->qi_name) - 
1);
                info->qi_state = cman_node.state;
                info->qi_votes = cman_node.votes;
        }
@@ -1087,7 +1087,7 @@ int cman_get_fenceinfo(cman_handle_t handle, int nodeid, 
uint64_t *time, int *fe
        if (!ret) {
                *time = f.fence_time;
                if (agent)
-                       strcpy(agent, f.fence_agent);
+                       strncpy(agent, f.fence_agent, sizeof(f.fence_agent) - 
1);
                *fenced = ((f.flags & FENCE_FLAGS_FENCED) != 0);
        }
        return ret;
@@ -1131,6 +1131,6 @@ int cman_node_fenced(cman_handle_t handle, int nodeid, 
uint64_t time, char *agen
 
        f.nodeid = nodeid;
        f.fence_time = time;
-       strcpy(f.fence_agent, agent);
+       strncpy(f.fence_agent, agent, sizeof(f.fence_agent) - 1);
        return info_call(h, CMAN_CMD_UPDATE_FENCE_INFO, &f, sizeof(f), NULL, 0);
 }
-- 
1.7.4.4

Reply via email to