فهرست منبع

Merge trunk revision 2787:
r2787 | honzaf | 2010-04-23 01:03:05 -0700 (Fri, 23 Apr 2010) | 11 lines

Handle some valgrind errors

- Memset for res_setup variable in coroipcs:req_setup_send
- Two memset in logsys for buffers
- Problem in corosync_totem_stats_updater where avg_token_holdtime has
size of avg_backlog_calc
- corosync_totem_stats_init where avg_backlog_calc is 32 bits (not 64)
- objdb problem if new_valie_len != object->value_len. In such case
newly allocated memory is not initialized and in some situations,
value_len is not updated.



git-svn-id: http://svn.fedorahosted.org/svn/corosync/branches/flatiron@2859 fd59a12c-fef9-0310-b244-a6a79926bd2f

Steven Dake 15 سال پیش
والد
کامیت
c42e27d950
4فایلهای تغییر یافته به همراه8 افزوده شده و 4 حذف شده
  1. 1 0
      exec/coroipcs.c
  2. 2 0
      exec/logsys.c
  3. 3 4
      exec/main.c
  4. 2 0
      exec/objdb.c

+ 1 - 0
exec/coroipcs.c

@@ -727,6 +727,7 @@ req_setup_send (
 	mar_res_setup_t res_setup;
 	mar_res_setup_t res_setup;
 	unsigned int res;
 	unsigned int res;
 
 
+	memset (&res_setup, 0, sizeof (res_setup));
 	res_setup.error = error;
 	res_setup.error = error;
 
 
 retry_send:
 retry_send:

+ 2 - 0
exec/logsys.c

@@ -736,6 +736,8 @@ static void *logsys_worker_thread (void *data)
 	int dropped = 0;
 	int dropped = 0;
 	int res;
 	int res;
 
 
+	memset (buf, 0, sizeof (buf));
+
 	/*
 	/*
 	 * Signal wthread_create that the initialization process may continue
 	 * Signal wthread_create that the initialization process may continue
 	 */
 	 */

+ 3 - 4
exec/main.c

@@ -571,13 +571,12 @@ static void corosync_totem_stats_updater (void *data)
 		mtt_rx_token = (total_mtt_rx_token / token_count);
 		mtt_rx_token = (total_mtt_rx_token / token_count);
 		avg_backlog_calc = (total_backlog_calc / token_count);
 		avg_backlog_calc = (total_backlog_calc / token_count);
 		avg_token_holdtime = (total_token_holdtime / token_count);
 		avg_token_holdtime = (total_token_holdtime / token_count);
-
 		objdb->object_key_replace (stats->mrp->srp->hdr.handle,
 		objdb->object_key_replace (stats->mrp->srp->hdr.handle,
 			"mtt_rx_token", strlen("mtt_rx_token"),
 			"mtt_rx_token", strlen("mtt_rx_token"),
 			&mtt_rx_token, sizeof (mtt_rx_token));
 			&mtt_rx_token, sizeof (mtt_rx_token));
 		objdb->object_key_replace (stats->mrp->srp->hdr.handle,
 		objdb->object_key_replace (stats->mrp->srp->hdr.handle,
 			"avg_token_workload", strlen("avg_token_workload"),
 			"avg_token_workload", strlen("avg_token_workload"),
-			&avg_token_holdtime, sizeof (avg_backlog_calc));
+			&avg_token_holdtime, sizeof (avg_token_holdtime));
 		objdb->object_key_replace (stats->mrp->srp->hdr.handle,
 		objdb->object_key_replace (stats->mrp->srp->hdr.handle,
 			"avg_backlog_calc", strlen("avg_backlog_calc"),
 			"avg_backlog_calc", strlen("avg_backlog_calc"),
 			&avg_backlog_calc, sizeof (avg_backlog_calc));
 			&avg_backlog_calc, sizeof (avg_backlog_calc));
@@ -693,8 +692,8 @@ static void corosync_totem_stats_init (void)
 			"avg_token_workload", &zero_32,
 			"avg_token_workload", &zero_32,
 			sizeof (zero_32), OBJDB_VALUETYPE_UINT32);
 			sizeof (zero_32), OBJDB_VALUETYPE_UINT32);
 		objdb->object_key_create_typed (stats->mrp->srp->hdr.handle,
 		objdb->object_key_create_typed (stats->mrp->srp->hdr.handle,
-			"avg_backlog_calc", &zero_64,
-			sizeof (zero_64), OBJDB_VALUETYPE_UINT64);
+			"avg_backlog_calc", &zero_32,
+			sizeof (zero_32), OBJDB_VALUETYPE_UINT32);
 		objdb->object_key_create_typed (stats->mrp->srp->hdr.handle,
 		objdb->object_key_create_typed (stats->mrp->srp->hdr.handle,
 			"rx_msg_dropped", &zero_64,
 			"rx_msg_dropped", &zero_64,
 			sizeof (zero_64), OBJDB_VALUETYPE_UINT64);
 			sizeof (zero_64), OBJDB_VALUETYPE_UINT64);

+ 2 - 0
exec/objdb.c

@@ -1316,6 +1316,8 @@ static int object_key_replace (
 				goto error_exit;
 				goto error_exit;
 			free(object_key->value);
 			free(object_key->value);
 			object_key->value = replacement_value;
 			object_key->value = replacement_value;
+			memset (object_key->value, 0, new_value_len);
+			object_key->value_len = new_value_len;
 		}
 		}
 		if (memcmp (object_key->value, new_value, new_value_len) == 0) {
 		if (memcmp (object_key->value, new_value, new_value_len) == 0) {
 			value_changed = 0;
 			value_changed = 0;