diff options
author | Geoffrey Keating <geoffk@geoffk.org> | 2006-12-21 01:32:48 +0000 |
---|---|---|
committer | Geoffrey Keating <geoffk@geoffk.org> | 2006-12-21 01:32:48 +0000 |
commit | 6ef6358e5115c85b60000afef572b2bcddf8766d (patch) | |
tree | e7d70bca09237d14b50763f72ccb495080ee9681 /libiberty/testsuite/demangle-expected | |
parent | 5f9aac7b0120e355069543a6f11aeb79c4053eca (diff) | |
download | gdb-6ef6358e5115c85b60000afef572b2bcddf8766d.zip gdb-6ef6358e5115c85b60000afef572b2bcddf8766d.tar.gz gdb-6ef6358e5115c85b60000afef572b2bcddf8766d.tar.bz2 |
* cp-demangle.h: Add comment explaining what to do to avoid
overrunning string.
(d_check_char): New.
(d_next_char): Don't advance past trailing '\0'.
* cp-demangle.c (cplus_demangle_mangled_name): Use d_check_char.
(d_nested_name): Likewise.
(d_special_name): Likewise.
(d_call_offset): Likewise.
(d_function_type): Likewise.
(d_array_type): Likewise.
(d_pointer_to_member_type): Likewise.
(d_template_param): Likewise.
(d_template_args): Likewise.
(d_template_arg): Likewise.
(d_expr_primary): Likewise.
(d_local_name): Likewise.
(d_substitution): Likewise.
(d_ctor_dtor_name): Use d_advance rather than d_next_char.
* testsuite/test-demangle.c: Include sys/mman.h.
(MAP_ANONYMOUS): Define.
(protect_end): New.
(main): Use protect_end.
* testsuite/demangle-expected: Add testcases for overrunning
the end of the string.
Diffstat (limited to 'libiberty/testsuite/demangle-expected')
-rw-r--r-- | libiberty/testsuite/demangle-expected | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected index 3f5622f..56d9f89 100644 --- a/libiberty/testsuite/demangle-expected +++ b/libiberty/testsuite/demangle-expected @@ -3816,3 +3816,25 @@ f SASDASDFASDF_sdfsdf SASDASDFASDF_sdfsdf SASDASDFASDF_sdfsdf +# These are all cases of invalid manglings where the demangler would read +# past the end of the string. +# d_name wasn't honouring a NULL from d_substitution +--format=gnu-v3 +_ZSA +_ZSA +# d_expr_primary wasn't honouring NULL from cplus_demangle_mangled_name +--format=gnu-v3 +_ZN1fIL_ +_ZN1fIL_ +# d_operator_name was taking two characters in a row +--format=gnu-v3 +_Za +_Za +# d_prefix wasn't honouring NULL from d_substitution +--format=gnu-v3 +_ZNSA +_ZNSA +# d_prefix wasn't honouring NULL from d_template_param +--format=gnu-v3 +_ZNT +_ZNT |