r11461@Kushana: nickm | 2006-12-07 13:16:45 -0500

Change logging format of state file to only include non-default values.  Adjust clients to never store bandwidth history in the state file. (Possible backport candidate.)


svn:r9043
This commit is contained in:
Nick Mathewson 2006-12-07 18:57:29 +00:00
parent 613af4bc98
commit 63e4cfbeb6
3 changed files with 18 additions and 7 deletions

View File

@ -12,6 +12,9 @@ Changes in version 0.1.2.5-xxxx - 200?-??-??
o Security bugfixes: o Security bugfixes:
- Do not log introduction points for hidden services if SafeLogging - Do not log introduction points for hidden services if SafeLogging
is set. is set.
- Clients do not store bandwidth history in their state files. (This
shouldn't be an exploitable security issue, but it's better to be
safe.)
o Controller bugfixes: o Controller bugfixes:
- Report the circuit number correctly in STREAM CLOSED events. (Bug - Report the circuit number correctly in STREAM CLOSED events. (Bug

View File

@ -274,11 +274,11 @@ static config_var_t _state_vars[] = {
VAR("EntryGuards", LINELIST_V, EntryGuards, NULL), VAR("EntryGuards", LINELIST_V, EntryGuards, NULL),
VAR("BWHistoryReadEnds", ISOTIME, BWHistoryReadEnds, NULL), VAR("BWHistoryReadEnds", ISOTIME, BWHistoryReadEnds, NULL),
VAR("BWHistoryReadInterval", UINT, BWHistoryReadInterval, NULL), VAR("BWHistoryReadInterval", UINT, BWHistoryReadInterval, "900"),
VAR("BWHistoryReadValues", CSV, BWHistoryReadValues, NULL), VAR("BWHistoryReadValues", CSV, BWHistoryReadValues, ""),
VAR("BWHistoryWriteEnds", ISOTIME, BWHistoryWriteEnds, NULL), VAR("BWHistoryWriteEnds", ISOTIME, BWHistoryWriteEnds, NULL),
VAR("BWHistoryWriteInterval", UINT, BWHistoryWriteInterval, NULL), VAR("BWHistoryWriteInterval", UINT, BWHistoryWriteInterval, "900"),
VAR("BWHistoryWriteValues", CSV, BWHistoryWriteValues, NULL), VAR("BWHistoryWriteValues", CSV, BWHistoryWriteValues, ""),
VAR("TorVersion", STRING, TorVersion, NULL), VAR("TorVersion", STRING, TorVersion, NULL),
@ -3968,7 +3968,7 @@ or_state_save(void)
global_state->LastWritten = time(NULL); global_state->LastWritten = time(NULL);
tor_free(global_state->TorVersion); tor_free(global_state->TorVersion);
global_state->TorVersion = tor_strdup("Tor " VERSION); global_state->TorVersion = tor_strdup("Tor " VERSION);
state = config_dump(&state_format, global_state, 0); state = config_dump(&state_format, global_state, 1);
len = strlen(state)+128; len = strlen(state)+128;
contents = tor_malloc(len); contents = tor_malloc(len);
format_local_iso_time(tbuf, time(NULL)); format_local_iso_time(tbuf, time(NULL));

View File

@ -659,12 +659,20 @@ rep_hist_update_state(or_state_t *state)
s_interval= r?&state->BWHistoryReadInterval:&state->BWHistoryWriteInterval; s_interval= r?&state->BWHistoryReadInterval:&state->BWHistoryWriteInterval;
s_values = r?&state->BWHistoryReadValues :&state->BWHistoryWriteValues; s_values = r?&state->BWHistoryReadValues :&state->BWHistoryWriteValues;
*s_begins = b->next_period;
*s_interval = NUM_SECS_BW_SUM_INTERVAL;
if (*s_values) { if (*s_values) {
SMARTLIST_FOREACH(*s_values, char *, cp, tor_free(cp)); SMARTLIST_FOREACH(*s_values, char *, cp, tor_free(cp));
smartlist_free(*s_values); smartlist_free(*s_values);
} }
if (! server_mode(get_options())) {
/* Clients don't need to store bandwidth history persistently;
* force these values to the defaults. */
*s_begins = 0;
*s_interval = 900;
*s_values = smartlist_create();
continue;
}
*s_begins = b->next_period;
*s_interval = NUM_SECS_BW_SUM_INTERVAL;
cp = buf; cp = buf;
cp += rep_hist_fill_bandwidth_history(cp, len, b); cp += rep_hist_fill_bandwidth_history(cp, len, b);
tor_snprintf(cp, len-(cp-buf), cp == buf ? U64_FORMAT : ","U64_FORMAT, tor_snprintf(cp, len-(cp-buf), cp == buf ? U64_FORMAT : ","U64_FORMAT,