Fix unsigned overflow in minsyms reader.

Message ID 20181106190423.70494-1-jhb@FreeBSD.org
State New, archived
Headers

Commit Message

John Baldwin Nov. 6, 2018, 7:04 p.m. UTC
  Use a ssize_t helper variable for the number of bytes to shrink the
msymbols obstack rather than relying on unsigned overflow to shrink
the size of the obstack.

gdb/ChangeLog:

	* minsyms.c (minimal_symbol_reader::install): Fix unsigned
	overflow.
---
 gdb/ChangeLog | 5 +++++
 gdb/minsyms.c | 5 +++--
 2 files changed, 8 insertions(+), 2 deletions(-)
  

Comments

Kevin Buettner Nov. 9, 2018, 4:13 a.m. UTC | #1
On Tue,  6 Nov 2018 11:04:23 -0800
John Baldwin <jhb@FreeBSD.org> wrote:

> Use a ssize_t helper variable for the number of bytes to shrink the
> msymbols obstack rather than relying on unsigned overflow to shrink
> the size of the obstack.
> 
> gdb/ChangeLog:
> 
> 	* minsyms.c (minimal_symbol_reader::install): Fix unsigned
> 	overflow.

Okay.

Kevin
  

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 68ecef7728..4120c62f33 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@ 
+2018-11-06  John Baldwin  <jhb@FreeBSD.org>
+
+	* minsyms.c (minimal_symbol_reader::install): Fix unsigned
+	overflow.
+
 2018-11-06  John Baldwin  <jhb@FreeBSD.org>
 
 	* riscv-fbsd-nat.c (getregs_supplies): Return true for
diff --git a/gdb/minsyms.c b/gdb/minsyms.c
index 4409e6f8b3..0f854422e0 100644
--- a/gdb/minsyms.c
+++ b/gdb/minsyms.c
@@ -1375,8 +1375,9 @@  minimal_symbol_reader::install ()
 
       mcount = compact_minimal_symbols (msymbols, mcount, m_objfile);
 
-      obstack_blank_fast (&m_objfile->per_bfd->storage_obstack,
-	       (mcount + 1 - alloc_count) * sizeof (struct minimal_symbol));
+      ssize_t shrink_bytes
+	= (mcount + 1 - alloc_count) * sizeof (struct minimal_symbol);
+      obstack_blank_fast (&m_objfile->per_bfd->storage_obstack, shrink_bytes);
       msymbols = (struct minimal_symbol *)
 	obstack_finish (&m_objfile->per_bfd->storage_obstack);