Fix a rare memleak during stats writing

If rep_hist_buffer_stats_write() was called unitinitalized, we'd leak
memory.
This commit is contained in:
Sebastian Hahn 2011-06-08 21:35:26 +02:00
parent 680646e0de
commit f303274490
2 changed files with 5 additions and 2 deletions

View File

@ -5,4 +5,5 @@
- Add some forgotten return value checks during unit tests. Found - Add some forgotten return value checks during unit tests. Found
by coverity. by coverity.
- Don't use 1-bit wide signed bit fields. Found by coverity. - Don't use 1-bit wide signed bit fields. Found by coverity.
- Fix a rare memory leak during stats writing. Found by coverity.

View File

@ -2451,8 +2451,8 @@ rep_hist_buffer_stats_write(time_t now)
int processed_cells[SHARES], circs_in_share[SHARES], int processed_cells[SHARES], circs_in_share[SHARES],
number_of_circuits, i; number_of_circuits, i;
double queued_cells[SHARES], time_in_queue[SHARES]; double queued_cells[SHARES], time_in_queue[SHARES];
smartlist_t *str_build = smartlist_create(); smartlist_t *str_build = NULL;
char *str = NULL, *buf=NULL; char *str = NULL, *buf = NULL;
circuit_t *circ; circuit_t *circ;
if (!start_of_buffer_stats_interval) if (!start_of_buffer_stats_interval)
@ -2460,6 +2460,8 @@ rep_hist_buffer_stats_write(time_t now)
if (start_of_buffer_stats_interval + WRITE_STATS_INTERVAL > now) if (start_of_buffer_stats_interval + WRITE_STATS_INTERVAL > now)
goto done; /* Not ready to write */ goto done; /* Not ready to write */
str_build = smartlist_create();
/* add current circuits to stats */ /* add current circuits to stats */
for (circ = _circuit_get_global_list(); circ; circ = circ->next) for (circ = _circuit_get_global_list(); circ; circ = circ->next)
rep_hist_buffer_stats_add_circ(circ, now); rep_hist_buffer_stats_add_circ(circ, now);