Merge branch 'maint-0.3.2' into maint-0.3.3

This commit is contained in:
Nick Mathewson 2018-05-02 08:46:28 -04:00
commit c66b512671
2 changed files with 16 additions and 2 deletions

5
changes/bug26007 Normal file
View File

@ -0,0 +1,5 @@
o Major bugfixes (directory authorities, security):
- When directory authorities read a zero-byte bandwidth file, they log
a warning with the contents of an uninitialised buffer. Log a warning
about the empty file instead.
Fixes bug 26007; bugfix on 0.2.2.1-alpha.

View File

@ -2801,14 +2801,23 @@ dirserv_read_measured_bandwidths(const char *from_file,
time_t file_time, now; time_t file_time, now;
int ok; int ok;
/* Initialise line, so that we can't possibly run off the end. */
memset(line, 0, sizeof(line));
if (fp == NULL) { if (fp == NULL) {
log_warn(LD_CONFIG, "Can't open bandwidth file at configured location: %s", log_warn(LD_CONFIG, "Can't open bandwidth file at configured location: %s",
from_file); from_file);
return -1; return -1;
} }
if (!fgets(line, sizeof(line), fp) /* If fgets fails, line is either unmodified, or indeterminate. */
|| !strlen(line) || line[strlen(line)-1] != '\n') { if (!fgets(line, sizeof(line), fp)) {
log_warn(LD_DIRSERV, "Empty bandwidth file");
fclose(fp);
return -1;
}
if (!strlen(line) || line[strlen(line)-1] != '\n') {
log_warn(LD_DIRSERV, "Long or truncated time in bandwidth file: %s", log_warn(LD_DIRSERV, "Long or truncated time in bandwidth file: %s",
escaped(line)); escaped(line));
fclose(fp); fclose(fp);