diff options
author | Ian Lance Taylor <iant@golang.org> | 2019-01-18 17:13:59 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2019-01-18 17:13:59 +0000 |
commit | 8b248c17bd9999eb3adb585b0789595bada43e8c (patch) | |
tree | 763e0966d741405f3d063a4c83449045813900b5 /libbacktrace/mmapio.c | |
parent | 89ce81fbe13dc554d489d9f00f92f85164b185d6 (diff) | |
download | gcc-8b248c17bd9999eb3adb585b0789595bada43e8c.zip gcc-8b248c17bd9999eb3adb585b0789595bada43e8c.tar.gz gcc-8b248c17bd9999eb3adb585b0789595bada43e8c.tar.bz2 |
re PR libbacktrace/88890 (libbacktrace on 32-bit system with _FILE_OFFSET_BITS == 64)
PR libbacktrace/88890
* mmapio.c (backtrace_get_view): Change size parameter to
uint64_t. Check that value fits in size_t.
* read.c (backtrace_get_view): Likewise.
* internal.h (backtrace_get_view): Update declaration.
* elf.c (elf_add): Pass shstrhdr->sh_size to backtrace_get_view.
From-SVN: r268082
Diffstat (limited to 'libbacktrace/mmapio.c')
-rw-r--r-- | libbacktrace/mmapio.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/libbacktrace/mmapio.c b/libbacktrace/mmapio.c index a87eb8f..b188a43 100644 --- a/libbacktrace/mmapio.c +++ b/libbacktrace/mmapio.c @@ -51,7 +51,7 @@ POSSIBILITY OF SUCH DAMAGE. */ int backtrace_get_view (struct backtrace_state *state ATTRIBUTE_UNUSED, - int descriptor, off_t offset, size_t size, + int descriptor, off_t offset, uint64_t size, backtrace_error_callback error_callback, void *data, struct backtrace_view *view) { @@ -60,6 +60,12 @@ backtrace_get_view (struct backtrace_state *state ATTRIBUTE_UNUSED, off_t pageoff; void *map; + if ((uint64_t) (size_t) size != size) + { + error_callback (data, "file size too large", 0); + return 0; + } + pagesize = getpagesize (); inpage = offset % pagesize; pageoff = offset - inpage; |