From 8b248c17bd9999eb3adb585b0789595bada43e8c Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Fri, 18 Jan 2019 17:13:59 +0000 Subject: 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 --- libbacktrace/read.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'libbacktrace/read.c') diff --git a/libbacktrace/read.c b/libbacktrace/read.c index 010f8f2..eb48526 100644 --- a/libbacktrace/read.c +++ b/libbacktrace/read.c @@ -46,12 +46,18 @@ POSSIBILITY OF SUCH DAMAGE. */ int backtrace_get_view (struct backtrace_state *state, int descriptor, - off_t offset, size_t size, + off_t offset, uint64_t size, backtrace_error_callback error_callback, void *data, struct backtrace_view *view) { ssize_t got; + if ((uint64_t) (size_t) size != size) + { + error_callback (data, "file size too large", 0); + return 0; + } + if (lseek (descriptor, offset, SEEK_SET) < 0) { error_callback (data, "lseek", errno); -- cgit v1.1