[prev in list] [next in list] [prev in thread] [next in thread]
List: redhat-linux-cluster
Subject: [Linux-cluster] [PATCH] Fix fence_agent string not correctly sent
From: Simone Gotti <simone.gotti () email ! it>
Date: 2007-01-05 14:02:17
Message-ID: 1168005737.6322.11.camel () localhost
[Download RAW message or body]
Hi all,
on the openais based cman-2.0.35-2.el5 I noticed that the output of
"cman_tool nodes -f" provided a not correctly terminated fence agent
name:
[root@nodo01 ~]# cman_tool nodes -f
Node Sts Inc Joined Name
1 M 4 2007-01-05 17:39:27 nodo01
2 X 0 nodo02
Last fenced: 2007-01-05 17:39:41 by fence-node02!�
^^
I think the problem is in the function do_cmd_update_fence_info in
cman/daemon/commands.c that calculate the bytes needed by the message to
send without counting the \0 terminating the fence_agent string.
I found also another similar problem in another point of the file and I
changed also it, but without testing.
I made a little patch and I hope it's correct.
Thanks!
Bye!
--
Simone Gotti
--
Email.it, the professional e-mail, gratis per te: http://www.email.it/f
Sponsor:
Acquista i tuoi gioielli in tutta sicurezza ed a prezzi veramente imbattibili. \
Sfoglia il nostro catalogo on-line! Clicca qui: \
http://adv.email.it/cgi-bin/foclick.cgi?mid=5634&d=5-1
["cman-2.0.35-cman-do_cmd_update_fence_info-msg_size.patch" (cman-2.0.35-cman-do_cmd_update_fence_info-msg_size.patch)]
diff -r -u -p cman-2.0.35.orig/cman/daemon/commands.c cman-2.0.35/cman/daemon/commands.c
--- cman-2.0.35.orig/cman/daemon/commands.c 2006-11-06 11:06:14.000000000 +0100
+++ cman-2.0.35/cman/daemon/commands.c 2007-01-05 18:12:33.000000000 +0100
@@ -1088,7 +1088,7 @@ static int do_cmd_update_fence_info(char
{
struct cl_fence_info *f = (struct cl_fence_info *)cmdbuf;
struct cluster_node *node;
- char msg[sizeof(struct cl_fencemsg)+strlen(f->fence_agent)];
+ char msg[sizeof(struct cl_fencemsg)+strlen(f->fence_agent)+1];
struct cl_fencemsg *fence_msg = (struct cl_fencemsg *)msg;
node = find_node_by_nodeid(f->nodeid);
@@ -1749,7 +1751,7 @@ static void do_process_transition(int no
if (node->fence_time && !msg->fence_time &&
node->fence_agent && !msg->fence_agent[0])
{
- char msg[sizeof(struct cl_fencemsg)+strlen(node->fence_agent)];
+ char msg[sizeof(struct cl_fencemsg)+strlen(node->fence_agent)+1];
struct cl_fencemsg *fence_msg = (struct cl_fencemsg *)msg;
fence_msg->cmd = CLUSTER_MSG_FENCESTATUS;
--
Linux-cluster mailing list
Linux-cluster@redhat.com
https://www.redhat.com/mailman/listinfo/linux-cluster
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic