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
This commit is contained in:
Angus Salkeld 2010-03-10 23:29:41 +00:00
parent 1924e328ca
commit b5a9d81f1f
3 changed files with 9 additions and 8 deletions

View File

@ -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);
}

View File

@ -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

View File

@ -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: