Change BUG() messages in buf_flush_to_tls() to IF_BUG_ONCE()

We introduced these BUG() checks in b0ddaac074 to prevent a
recurrence of bug 23690.  But there's a report of the BUG() message
getting triggered and filling up the disk.  Let's change it to
IF_BUG_ONCE().

Fixes bug 33093; bugfix on 0.3.2.2-alpha.
This commit is contained in:
Nick Mathewson 2020-01-29 08:31:22 -05:00
parent 19954cffd7
commit 1f163fcbde
2 changed files with 7 additions and 2 deletions

5
changes/bug33093_logging Normal file
View File

@ -0,0 +1,5 @@
o Minor bugfixes (logging):
- If we encounter a bug when flushing a buffer to a TLS connection,
only log the bug once per invocation of the Tor process. Previously we
would log with every occurrence, which could cause us to run out of
disk space. Fixes bug 33093; bugfix on 0.3.2.2-alpha.

View File

@ -146,10 +146,10 @@ buf_flush_to_tls(buf_t *buf, tor_tls_t *tls, size_t flushlen,
size_t flushed = 0; size_t flushed = 0;
ssize_t sz; ssize_t sz;
tor_assert(buf_flushlen); tor_assert(buf_flushlen);
if (BUG(*buf_flushlen > buf->datalen)) { IF_BUG_ONCE(*buf_flushlen > buf->datalen) {
*buf_flushlen = buf->datalen; *buf_flushlen = buf->datalen;
} }
if (BUG(flushlen > *buf_flushlen)) { IF_BUG_ONCE(flushlen > *buf_flushlen) {
flushlen = *buf_flushlen; flushlen = *buf_flushlen;
} }
sz = (ssize_t) flushlen; sz = (ssize_t) flushlen;