diff options
author | Ian Lance Taylor <iant@google.com> | 2012-10-29 15:43:37 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2012-10-29 15:43:37 +0000 |
commit | 8277de3441053e7c440a71823598e43e56da2606 (patch) | |
tree | 5ba16e70e1d72729529fa0bfe721295c7fdff503 /libbacktrace | |
parent | 13a6a8d23faa0bec6e9a98a852eb68a15c60ec18 (diff) | |
download | gcc-8277de3441053e7c440a71823598e43e56da2606.zip gcc-8277de3441053e7c440a71823598e43e56da2606.tar.gz gcc-8277de3441053e7c440a71823598e43e56da2606.tar.bz2 |
mmap.c (backtrace_vector_release): Make sure freed block is aligned on 8-byte boundary.
* mmap.c (backtrace_vector_release): Make sure freed block is
aligned on 8-byte boundary.
From-SVN: r192945
Diffstat (limited to 'libbacktrace')
-rw-r--r-- | libbacktrace/ChangeLog | 5 | ||||
-rw-r--r-- | libbacktrace/mmap.c | 14 |
2 files changed, 17 insertions, 2 deletions
diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog index 4850d9d..f04f1d5 100644 --- a/libbacktrace/ChangeLog +++ b/libbacktrace/ChangeLog @@ -1,3 +1,8 @@ +2012-10-29 Ian Lance Taylor <iant@google.com> + + * mmap.c (backtrace_vector_release): Make sure freed block is + aligned on 8-byte boundary. + 2012-10-26 Ian Lance Taylor <iant@google.com> PR other/55087 diff --git a/libbacktrace/mmap.c b/libbacktrace/mmap.c index e07810d..25fdc21 100644 --- a/libbacktrace/mmap.c +++ b/libbacktrace/mmap.c @@ -229,8 +229,18 @@ backtrace_vector_release (struct backtrace_state *state, backtrace_error_callback error_callback, void *data) { - backtrace_free (state, (char *) vec->base + vec->size, vec->alc, - error_callback, data); + size_t size; + size_t alc; + size_t aligned; + + /* Make sure that the block that we free is aligned on an 8-byte + boundary. */ + size = vec->size; + alc = vec->alc; + aligned = (size + 7) & ~ (size_t) 7; + alc -= aligned - size; + + backtrace_free (state, (char *) vec->base + size, alc, error_callback, data); vec->alc = 0; return 1; } |