aboutsummaryrefslogtreecommitdiff
path: root/libbacktrace
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2020-12-02 11:06:40 -0800
committerIan Lance Taylor <iant@golang.org>2020-12-02 11:07:59 -0800
commit8f461a883bab76c9075ebb1083c9a23af24c201b (patch)
tree56ed361ebe09b63c534b7af03c6e6470f38b0a16 /libbacktrace
parent0a7dc4b6440faa8cd57c630f1e394a719469c399 (diff)
downloadgcc-8f461a883bab76c9075ebb1083c9a23af24c201b.zip
gcc-8f461a883bab76c9075ebb1083c9a23af24c201b.tar.gz
gcc-8f461a883bab76c9075ebb1083c9a23af24c201b.tar.bz2
libbacktrace: correct buffer overflow tests
* dwarf.c (resolve_string): Use > rather than >= to check whether string index extends past buffer. (resolve_addr_index): Similarly for address index.
Diffstat (limited to 'libbacktrace')
-rw-r--r--libbacktrace/dwarf.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libbacktrace/dwarf.c b/libbacktrace/dwarf.c
index 582f34b..0c913c9 100644
--- a/libbacktrace/dwarf.c
+++ b/libbacktrace/dwarf.c
@@ -1053,7 +1053,7 @@ resolve_string (const struct dwarf_sections *dwarf_sections, int is_dwarf64,
offset = val->u.uint * (is_dwarf64 ? 8 : 4) + str_offsets_base;
if (offset + (is_dwarf64 ? 8 : 4)
- >= dwarf_sections->size[DEBUG_STR_OFFSETS])
+ > dwarf_sections->size[DEBUG_STR_OFFSETS])
{
error_callback (data, "DW_FORM_strx value out of range", 0);
return 0;
@@ -1097,7 +1097,7 @@ resolve_addr_index (const struct dwarf_sections *dwarf_sections,
struct dwarf_buf addr_buf;
offset = addr_index * addrsize + addr_base;
- if (offset + addrsize >= dwarf_sections->size[DEBUG_ADDR])
+ if (offset + addrsize > dwarf_sections->size[DEBUG_ADDR])
{
error_callback (data, "DW_FORM_addrx value out of range", 0);
return 0;