[Openais] [PATCH] fix buffer overrun in test agent.
Steven Dake
sdake at redhat.com
Wed Mar 10 14:46:52 PST 2010
god for merge
On Tue, 2010-03-09 at 07:08 +1100, Angus Salkeld wrote:
> Also to make debugging easier:
> 1) don't stop abrt
> 2) fix debug message
> 3) catch a failed message to the TA and fail the test.
>
> Signed-off-by: Angus Salkeld <asalkeld at redhat.com>
> ---
> cts/agents/cpg_test_agent.c | 8 ++++----
> cts/corosync.py | 4 +---
> cts/corotests.py | 5 ++++-
> 3 files changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/cts/agents/cpg_test_agent.c b/cts/agents/cpg_test_agent.c
> index c6dd165..593aadc 100644
> --- a/cts/agents/cpg_test_agent.c
> +++ b/cts/agents/cpg_test_agent.c
> @@ -72,7 +72,7 @@ typedef struct {
> char payload[1];
> } msg_t;
>
> -#define LOG_STR_SIZE 128
> +#define LOG_STR_SIZE 256
> typedef struct {
> char log[LOG_STR_SIZE];
> struct list_head list;
> @@ -129,7 +129,7 @@ static void delivery_callback (
>
> log_pt = malloc (sizeof(log_entry_t));
> list_init (&log_pt->list);
> - snprintf (log_pt->log, 128, "%d:%d:%d:%d;",
> + snprintf (log_pt->log, LOG_STR_SIZE, "%d:%d:%d:%d;",
> msg_pt->nodeid, msg_pt->pid, msg_pt->seq, status);
> list_add_tail (&log_pt->list, &msg_log_head);
> total_stored_msgs++;
> @@ -155,7 +155,7 @@ static void config_change_callback (
>
> log_pt = malloc (sizeof(log_entry_t));
> list_init (&log_pt->list);
> - snprintf (log_pt->log, 256, "%s,%d,%d,left",
> + snprintf (log_pt->log, LOG_STR_SIZE, "%s,%d,%d,left",
> groupName->value, left_list[i].nodeid,left_list[i].pid);
> list_add_tail(&log_pt->list, &config_chg_log_head);
> }
> @@ -164,7 +164,7 @@ static void config_change_callback (
>
> log_pt = malloc (sizeof(log_entry_t));
> list_init (&log_pt->list);
> - snprintf (log_pt->log, 256, "%s,%d,%d,join",
> + snprintf (log_pt->log, LOG_STR_SIZE, "%s,%d,%d,join",
> groupName->value, joined_list[i].nodeid,joined_list[i].pid);
> list_add_tail (&log_pt->list, &config_chg_log_head);
> }
> diff --git a/cts/corosync.py b/cts/corosync.py
> index 09c55af..21cb5b5 100644
> --- a/cts/corosync.py
> +++ b/cts/corosync.py
> @@ -261,7 +261,6 @@ class corosync_flatiron(ClusterManager):
> for node in self.Env["nodes"]:
> self.ShouldBeStatus[node] = ""
> self.unisolate_node(node)
> - self.rsh(node, 'service abrtd stop', 1)
> self.StataCM(node)
>
> def HasQuorum(self, node_list):
> @@ -355,7 +354,6 @@ class TestAgent(object):
>
> def start(self):
> '''Set up the given ScenarioComponent'''
> -
> self.env.debug('test agent: start (' + self.node + ')')
> self.sock = socket.socket (socket.AF_INET, socket.SOCK_STREAM)
> ip = socket.gethostbyname(self.node)
> @@ -369,7 +367,7 @@ class TestAgent(object):
> is_connected = True
> except socket.error, msg:
> if retries > 5:
> - self.env.debug( "Retried " + str(retries) + " times. Error: " + msg )
> + self.env.debug("Retried " + str(retries) + " times. Error: " + str(msg))
> time.sleep(1)
> self.started = True
> self.used = False
> diff --git a/cts/corotests.py b/cts/corotests.py
> index 5169d2a..d950d5c 100644
> --- a/cts/corotests.py
> +++ b/cts/corotests.py
> @@ -96,7 +96,10 @@ class CpgConfigChangeBase(CoroTest):
> printit = 0
> self.CM.log("Waiting for config change on " + self.listener)
> while not found:
> - event = self.CM.agent[self.listener].read_config_event()
> + try:
> + event = self.CM.agent[self.listener].read_config_event()
> + except:
> + return self.failure('connection to test agent failed.')
> if not event == None:
> self.CM.debug("RECEIVED: " + str(event))
> if event == None:
More information about the Openais
mailing list