diff options
author | Nick Mathewson <nickm@torproject.org> | 2015-03-03 22:25:26 +0100 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2015-03-03 22:25:26 +0100 |
commit | 81a994ce77038721df3aa2f77b783db9a52da79e (patch) | |
tree | db02dd26457750787f644d2f9cdfeaa4cb9294cc | |
parent | 71ee53fe9bdf3f64eef9b38de55960185e8be1b5 (diff) | |
download | tor-81a994ce77038721df3aa2f77b783db9a52da79e.tar.gz tor-81a994ce77038721df3aa2f77b783db9a52da79e.zip |
Make the assert related to 15083 a tiny bit more tolerant
-rw-r--r-- | changes/bug15083 | 6 | ||||
-rw-r--r-- | src/or/buffers.c | 9 |
2 files changed, 13 insertions, 2 deletions
diff --git a/changes/bug15083 b/changes/bug15083 index 98d1d0e535..2bd0715dfc 100644 --- a/changes/bug15083 +++ b/changes/bug15083 @@ -3,4 +3,8 @@ failure if a buffer of exactly the wrong layout was passed to buf_pullup() at exactly the wrong time. Fixes bug 15083; bugfix on 0.2.0.10-alpha. Patch from 'cypherpunks'. - + + - Do not assert if the 'data' pointer on a buffer is advanced to the very + end of the buffer; log a BUG message instead. Only assert if it is + past that point. Fixes bug 15083; bugfix on 0.2.0.10-alpha. + diff --git a/src/or/buffers.c b/src/or/buffers.c index 7976432793..9dfed007da 100644 --- a/src/or/buffers.c +++ b/src/or/buffers.c @@ -2483,7 +2483,14 @@ assert_buf_ok(buf_t *buf) total += ch->datalen; tor_assert(ch->datalen <= ch->memlen); tor_assert(ch->data >= &ch->mem[0]); - tor_assert(ch->data < &ch->mem[0]+ch->memlen); + tor_assert(ch->data <= &ch->mem[0]+ch->memlen); + if (ch->data == &ch->mem[0]+ch->memlen) { + static int warned = 0; + if (! warned) { + log_warn(LD_BUG, "Invariant violation in buf.c related to #15083"); + warned = 1; + } + } tor_assert(ch->data+ch->datalen <= &ch->mem[0] + ch->memlen); if (!ch->next) tor_assert(ch == buf->tail); |