From b5a9d81f1f729d4b7c6bbf27492f6406ef7cea94 Mon Sep 17 00:00:00 2001 From: Angus Salkeld Date: Wed, 10 Mar 2010 23:29:41 +0000 Subject: [PATCH] CTS: fix buffer overrun in test agent. Also to make debugging easier: 1) don't stop abrt 2) fix debug message 3) catch a failed mesage to the TA and fail the test. git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@2680 fd59a12c-fef9-0310-b244-a6a79926bd2f --- 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 c6dd1659..593aadc2 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 09c55afc..21cb5b57 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 5169d2ab..d950d5c4 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: