public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
* [Bug gdb/30639] New: AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool)
@ 2023-07-15 6:26 sihan2021 at iscas dot ac.cn
2023-07-15 6:27 ` [Bug gdb/30639] " sihan2021 at iscas dot ac.cn
` (10 more replies)
0 siblings, 11 replies; 12+ messages in thread
From: sihan2021 at iscas dot ac.cn @ 2023-07-15 6:26 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=30639
Bug ID: 30639
Summary: AddressSanitizer: dynamic-stack-buffer-overflow
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-
lang.c:1388:16 in ada_decode[abi:cxx11](char const*,
bool, bool)
Product: gdb
Version: 13.1
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: gdb
Assignee: unassigned at sourceware dot org
Reporter: sihan2021 at iscas dot ac.cn
Target Milestone: ---
Created attachment 14967
--> https://sourceware.org/bugzilla/attachment.cgi?id=14967&action=edit
crash seed
Hello GDB developers,
We recently conducted a fuzzing test on GDB and discovered a
dynamic-stack-buffer-overflow bug. We would like to provide a detailed
description of the bug and seek your assistance in addressing it.
version:
gdb:GNU gdb (GDB) 13.0.50.20220805-git
gcc:gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
ubuntu: 20.04
command to reproduce:
gdb -x command.gdb UAF_2
UAF_2 is attached to this report.
command.gdb is attached to the first comment.
ASAN report:
=================================================================
==2661699==ERROR: AddressSanitizer: dynamic-stack-buffer-overflow on address
0x7ffe5c3013ff at pc 0x00000057b9bd bp 0x7ffe5c300910 sp 0x7ffe5c300908
READ of size 1 at 0x7ffe5c3013ff thread T0
#0 0x57b9bc in ada_decode[abi:cxx11](char const*, bool, bool)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16
#1 0x61bbd1 in ada_language::sniff_from_mangled_name(char const*,
std::unique_ptr<char, gdb::xfree_deleter<char> >*) const
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:13574:29
#2 0x1c46d7d in symbol_find_demangled_name(general_symbol_info*, char
const*) /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/symtab.c:892:17
#3 0x1c47e70 in
general_symbol_info::compute_and_set_names(gdb::basic_string_view<char,
std::char_traits<char> >, bool, objfile_per_bfd_storage*,
gdb::optional<unsigned int>)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/symtab.c:980:7
#4 0xb2919d in process_coff_symbol(coff_symbol*, internal_auxent*,
objfile*) /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/coffread.c:1571:8
#5 0xb2604b in coff_symtab_read(minimal_symbol_reader&, long, unsigned int,
objfile*) /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/coffread.c:1183:4
#6 0xb1d5ea in coff_read_minsyms(long, unsigned int, objfile*)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/coffread.c:554:7
#7 0xb1abd0 in coff_symfile_read(objfile*, enum_flags<symfile_add_flag>)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/coffread.c:702:3
#8 0x1bf6a0e in read_symbols(objfile*, enum_flags<symfile_add_flag>)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/symfile.c:772:3
#9 0x1c19531 in syms_from_objfile_1(objfile*, std::vector<other_sections,
std::allocator<other_sections> >*, enum_flags<symfile_add_flag>)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/symfile.c:968:3
#10 0x1c180fd in syms_from_objfile(objfile*, std::vector<other_sections,
std::allocator<other_sections> >*, enum_flags<symfile_add_flag>)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/symfile.c:985:3
#11 0x1be663c in symbol_file_add_with_addrs(bfd*, char const*,
enum_flags<symfile_add_flag>, std::vector<other_sections,
std::allocator<other_sections> >*, enum_flags<objfile_flag>, objfile*)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/symfile.c:1088:3
#12 0x1be70b3 in symbol_file_add_from_bfd(bfd*, char const*,
enum_flags<symfile_add_flag>, std::vector<other_sections,
std::allocator<other_sections> >*, enum_flags<objfile_flag>, objfile*)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/symfile.c:1168:10
#13 0x1be7459 in symbol_file_add(char const*, enum_flags<symfile_add_flag>,
std::vector<other_sections, std::allocator<other_sections> >*,
enum_flags<objfile_flag>)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/symfile.c:1181:10
#14 0x1be873e in symbol_file_add_main_1(char const*,
enum_flags<symfile_add_flag>, enum_flags<objfile_flag>, unsigned long)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/symfile.c:1205:29
#15 0x1be82ea in symbol_file_add_main(char const*,
enum_flags<symfile_add_flag>)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/symfile.c:1196:3
#16 0x15c8b73 in symbol_file_add_main_adapter(char const*, int)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/main.c:540:3
#17 0x15c6d2c in catch_command_errors(void (*)(char const*, int), char
const*, int, bool)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/main.c:513:7
#18 0x15c433a in captured_main_1(captured_main_args*)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/main.c:1212:8
#19 0x15be28d in captured_main(void*)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/main.c:1319:3
#20 0x15be058 in gdb_main(captured_main_args*)
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/main.c:1344:7
#21 0x4e4f12 in main
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/gdb.c:32:10
#22 0x7f63cb655082 in __libc_start_main
/build/glibc-SzIz7B/glibc-2.31/csu/../csu/libc-start.c:308:16
#23 0x433ebd in _start
(/home/root/sp/Fuzz/aflpp_fuzz/Binutils/document_group/batch_x/gdb_1/gdb+0x433ebd)
Address 0x7ffe5c3013ff is located in stack of thread T0 at offset 479 in frame
#0 0x1c4685f in symbol_find_demangled_name(general_symbol_info*, char
const*) /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/symtab.c:872
This frame has 1 object(s):
[32, 40) 'demangled' (line 873) <== Memory access at offset 479 overflows
this variable
HINT: this may be a false positive if your program uses some custom stack
unwind mechanism, swapcontext or vfork
(longjmp and C++ exceptions *are* supported)
SUMMARY: AddressSanitizer: dynamic-stack-buffer-overflow
/home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in
ada_decode[abi:cxx11](char const*, bool, bool)
Shadow bytes around the buggy address:
0x10004b858220: f3 f3 f3 f3 00 00 00 00 00 00 00 00 00 00 00 00
0x10004b858230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x10004b858240: 00 00 00 00 f1 f1 f1 f1 00 f3 f3 f3 00 00 00 00
0x10004b858250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
0x10004b858260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
=>0x10004b858270: 00 00 00 00 00 00 00 00 00 00 00 00 ca ca ca[ca]
0x10004b858280: 03 cb cb cb cb cb cb cb f1 f1 f1 f1 00 00 f2 f2
0x10004b858290: 00 00 00 00 f2 f2 f2 f2 00 00 f2 f2 f8 f2 00 f2
0x10004b8582a0: f2 f2 00 00 f2 f2 f8 f8 f2 f2 00 f2 f2 f2 00 00
0x10004b8582b0: f2 f2 00 00 f3 f3 f3 f3 00 00 00 00 00 00 00 00
0x10004b8582c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==2661699==ABORTING
Thank you for your attention and support.
Best regards,
Michael Zhang.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug gdb/30639] AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool)
2023-07-15 6:26 [Bug gdb/30639] New: AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool) sihan2021 at iscas dot ac.cn
@ 2023-07-15 6:27 ` sihan2021 at iscas dot ac.cn
2023-07-26 19:15 ` keiths at redhat dot com
` (9 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: sihan2021 at iscas dot ac.cn @ 2023-07-15 6:27 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=30639
--- Comment #1 from 熊吉思汗 <sihan2021 at iscas dot ac.cn> ---
Created attachment 14968
--> https://sourceware.org/bugzilla/attachment.cgi?id=14968&action=edit
input file of -x option
input file of -x option
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug gdb/30639] AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool)
2023-07-15 6:26 [Bug gdb/30639] New: AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool) sihan2021 at iscas dot ac.cn
2023-07-15 6:27 ` [Bug gdb/30639] " sihan2021 at iscas dot ac.cn
@ 2023-07-26 19:15 ` keiths at redhat dot com
2023-07-29 5:35 ` sihan2021 at iscas dot ac.cn
` (8 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: keiths at redhat dot com @ 2023-07-26 19:15 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=30639
Keith Seitz <keiths at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |keiths at redhat dot com
--- Comment #2 from Keith Seitz <keiths at redhat dot com> ---
The supplied executable does not segfault gdb in the reported location:
$ ./gdb -nx -q --data-directory data-directory UAF_2
Reading symbols from UAF_2...
Fatal signal: Segmentation fault
----- Backtrace -----
0x599064 gdb_internal_backtrace_1
../../src/gdb/bt-utils.c:122
0x599107 _Z22gdb_internal_backtracev
../../src/gdb/bt-utils.c:168
0x782fd4 handle_fatal_signal
../../src/gdb/event-top.c:889
0x783140 handle_sigsegv
../../src/gdb/event-top.c:962
0x7fe5a7d7eb6f ???
0x6107a5 process_coff_symbol
../../src/gdb/coffread.c:1572
0x60f847 coff_symtab_read
../../src/gdb/coffread.c:1190
0x60e0dd coff_read_minsyms
../../src/gdb/coffread.c:549
0x60e629 coff_symfile_read
../../src/gdb/coffread.c:698
0xbd975e read_symbols
../../src/gdb/symfile.c:772
0xbd9e0b syms_from_objfile_1
../../src/gdb/symfile.c:966
0xbd9ecf syms_from_objfile
../../src/gdb/symfile.c:983
0xbda3aa symbol_file_add_with_addrs
../../src/gdb/symfile.c:1086
0xbda6eb
_Z24symbol_file_add_from_bfdRKN3gdb7ref_ptrI3bfd18gdb_bfd_ref_policyEEPKc10enum_flagsI16symfile_add_flagEPSt6vectorI14other_sectionsSaISC_EES8_I12objfile_flagEP7objfile
../../src/gdb/symfile.c:1166
0xbda73a
_Z15symbol_file_addPKc10enum_flagsI16symfile_add_flagEPSt6vectorI14other_sectionsSaIS5_EES1_I12objfile_flagE
../../src/gdb/symfile.c:1179
0xbda7ff symbol_file_add_main_1
../../src/gdb/symfile.c:1203
0xbda7a6 _Z20symbol_file_add_mainPKc10enum_flagsI16symfile_add_flagE
../../src/gdb/symfile.c:1194
0x90b1d7 symbol_file_add_main_adapter
../../src/gdb/main.c:549
0x90b0ed catch_command_errors
../../src/gdb/main.c:518
0x90c20e captured_main_1
../../src/gdb/main.c:1203
0x90c820 captured_main
../../src/gdb/main.c:1310
0x90c8bf _Z8gdb_mainP18captured_main_args
../../src/gdb/main.c:1339
0x418c3c main
../../src/gdb/gdb.c:32
---------------------
A fatal error internal to GDB has been detected, further
debugging is not possible. GDB will now terminate.
This is a bug, please report it. For instructions, see:
<https://www.gnu.org/software/gdb/bugs/>.
Segmentation fault (core dumped)
Did you attach the correct binary to this bug?
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug gdb/30639] AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool)
2023-07-15 6:26 [Bug gdb/30639] New: AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool) sihan2021 at iscas dot ac.cn
2023-07-15 6:27 ` [Bug gdb/30639] " sihan2021 at iscas dot ac.cn
2023-07-26 19:15 ` keiths at redhat dot com
@ 2023-07-29 5:35 ` sihan2021 at iscas dot ac.cn
2023-07-29 5:49 ` sihan2021 at iscas dot ac.cn
` (7 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: sihan2021 at iscas dot ac.cn @ 2023-07-29 5:35 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=30639
--- Comment #3 from 熊吉思汗 <sihan2021 at iscas dot ac.cn> ---
(In reply to Keith Seitz from comment #2)
> The supplied executable does not segfault gdb in the reported location:
>
> $ ./gdb -nx -q --data-directory data-directory UAF_2
> Reading symbols from UAF_2...
>
>
> Fatal signal: Segmentation fault
> ----- Backtrace -----
> 0x599064 gdb_internal_backtrace_1
> ../../src/gdb/bt-utils.c:122
> 0x599107 _Z22gdb_internal_backtracev
> ../../src/gdb/bt-utils.c:168
> 0x782fd4 handle_fatal_signal
> ../../src/gdb/event-top.c:889
> 0x783140 handle_sigsegv
> ../../src/gdb/event-top.c:962
> 0x7fe5a7d7eb6f ???
> 0x6107a5 process_coff_symbol
> ../../src/gdb/coffread.c:1572
> 0x60f847 coff_symtab_read
> ../../src/gdb/coffread.c:1190
> 0x60e0dd coff_read_minsyms
> ../../src/gdb/coffread.c:549
> 0x60e629 coff_symfile_read
> ../../src/gdb/coffread.c:698
> 0xbd975e read_symbols
> ../../src/gdb/symfile.c:772
> 0xbd9e0b syms_from_objfile_1
> ../../src/gdb/symfile.c:966
> 0xbd9ecf syms_from_objfile
> ../../src/gdb/symfile.c:983
> 0xbda3aa symbol_file_add_with_addrs
> ../../src/gdb/symfile.c:1086
> 0xbda6eb
> _Z24symbol_file_add_from_bfdRKN3gdb7ref_ptrI3bfd18gdb_bfd_ref_policyEEPKc10en
> um_flagsI16symfile_add_flagEPSt6vectorI14other_sectionsSaISC_EES8_I12objfile_
> flagEP7objfile
> ../../src/gdb/symfile.c:1166
> 0xbda73a
> _Z15symbol_file_addPKc10enum_flagsI16symfile_add_flagEPSt6vectorI14other_sect
> ionsSaIS5_EES1_I12objfile_flagE
> ../../src/gdb/symfile.c:1179
> 0xbda7ff symbol_file_add_main_1
> ../../src/gdb/symfile.c:1203
> 0xbda7a6 _Z20symbol_file_add_mainPKc10enum_flagsI16symfile_add_flagE
> ../../src/gdb/symfile.c:1194
> 0x90b1d7 symbol_file_add_main_adapter
> ../../src/gdb/main.c:549
> 0x90b0ed catch_command_errors
> ../../src/gdb/main.c:518
> 0x90c20e captured_main_1
> ../../src/gdb/main.c:1203
> 0x90c820 captured_main
> ../../src/gdb/main.c:1310
> 0x90c8bf _Z8gdb_mainP18captured_main_args
> ../../src/gdb/main.c:1339
> 0x418c3c main
> ../../src/gdb/gdb.c:32
> ---------------------
> A fatal error internal to GDB has been detected, further
> debugging is not possible. GDB will now terminate.
>
> This is a bug, please report it. For instructions, see:
> <https://www.gnu.org/software/gdb/bugs/>.
>
> Segmentation fault (core dumped)
>
> Did you attach the correct binary to this bug?
To reproduce this bug, please use the following command: gdb -x command.gdb
UAF_2. The necessary files for this command are as follows: command.gdb
(attachment_14968) and UAF_2 (attachment_14967). You can find command.gdb
attached to the first comment, and UAF_2 attached as attachment_14967. If you
encounter any issues during the reproduction process, please feel free to let
me know.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug gdb/30639] AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool)
2023-07-15 6:26 [Bug gdb/30639] New: AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool) sihan2021 at iscas dot ac.cn
` (2 preceding siblings ...)
2023-07-29 5:35 ` sihan2021 at iscas dot ac.cn
@ 2023-07-29 5:49 ` sihan2021 at iscas dot ac.cn
2023-07-29 5:49 ` sihan2021 at iscas dot ac.cn
` (6 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: sihan2021 at iscas dot ac.cn @ 2023-07-29 5:49 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=30639
--- Comment #4 from 熊吉思汗 <sihan2021 at iscas dot ac.cn> ---
Created attachment 15019
--> https://sourceware.org/bugzilla/attachment.cgi?id=15019&action=edit
UAF_2
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug gdb/30639] AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool)
2023-07-15 6:26 [Bug gdb/30639] New: AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool) sihan2021 at iscas dot ac.cn
` (3 preceding siblings ...)
2023-07-29 5:49 ` sihan2021 at iscas dot ac.cn
@ 2023-07-29 5:49 ` sihan2021 at iscas dot ac.cn
2023-07-29 5:50 ` sihan2021 at iscas dot ac.cn
` (5 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: sihan2021 at iscas dot ac.cn @ 2023-07-29 5:49 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=30639
--- Comment #5 from 熊吉思汗 <sihan2021 at iscas dot ac.cn> ---
Created attachment 15020
--> https://sourceware.org/bugzilla/attachment.cgi?id=15020&action=edit
command.gdb
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug gdb/30639] AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool)
2023-07-15 6:26 [Bug gdb/30639] New: AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool) sihan2021 at iscas dot ac.cn
` (4 preceding siblings ...)
2023-07-29 5:49 ` sihan2021 at iscas dot ac.cn
@ 2023-07-29 5:50 ` sihan2021 at iscas dot ac.cn
2023-07-29 15:15 ` tromey at sourceware dot org
` (4 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: sihan2021 at iscas dot ac.cn @ 2023-07-29 5:50 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=30639
--- Comment #6 from 熊吉思汗 <sihan2021 at iscas dot ac.cn> ---
I uploaded the command.gdb and UAF_2 file in the comment below.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug gdb/30639] AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool)
2023-07-15 6:26 [Bug gdb/30639] New: AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool) sihan2021 at iscas dot ac.cn
` (5 preceding siblings ...)
2023-07-29 5:50 ` sihan2021 at iscas dot ac.cn
@ 2023-07-29 15:15 ` tromey at sourceware dot org
2023-08-15 18:11 ` keiths at redhat dot com
` (3 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: tromey at sourceware dot org @ 2023-07-29 15:15 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=30639
Tom Tromey <tromey at sourceware dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |tromey at sourceware dot org
--- Comment #7 from Tom Tromey <tromey at sourceware dot org> ---
For me this crashes in read_pe_truncate_name because
read_pe_exported_syms seems to make a pointer to invalid memory.
If there's a crash in the Ada decoder, that isn't a case of GIGO,
what I'd really like to know is the name being decoded.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug gdb/30639] AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool)
2023-07-15 6:26 [Bug gdb/30639] New: AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool) sihan2021 at iscas dot ac.cn
` (6 preceding siblings ...)
2023-07-29 15:15 ` tromey at sourceware dot org
@ 2023-08-15 18:11 ` keiths at redhat dot com
2023-08-16 16:44 ` [Bug ada/30639] " tromey at sourceware dot org
` (2 subsequent siblings)
10 siblings, 0 replies; 12+ messages in thread
From: keiths at redhat dot com @ 2023-08-15 18:11 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=30639
Keith Seitz <keiths at redhat dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Last reconfirmed| |2023-08-15
Ever confirmed|0 |1
Status|UNCONFIRMED |NEW
--- Comment #8 from Keith Seitz <keiths at redhat dot com> ---
My apologies, this DOES reproduce (as Tom notes). The thing I
ignored was ASAN. [The crash I reported was recently fixed by
Alan Modra's "gdb: warn unused result for bfd IO functions".]
[Probably TMI for Tom, but for anyone following along...]
In process_coff_symbol, we are processing a symbol with name "44",
i.e, just digits. The language of this objfile is language_unknown.
process_coff_symbol calls general_symbol_info::compute_and_set_names.
This eventually calls symbol_find_demangled_name with linkage_name_copy
set to "44". Since the objfile's language is unknown, symbol_find_linkage_name
iterates over all languages, calling the language's sniff_from_mangled_name
method. This does nothing for all the languages until it hits language_ada.
ada_language::sniff_from_mangled immediately calls ada_decode.
The code here essentially skips to the last block which attempts to
remove trailing digits:
1370 /* Remove trailing __{digit}+ or trailing ${digit}+. */
1371
1372 if (len0 > 1 && isdigit (encoded[len0 - 1]))
1373 {
1374 i = len0 - 2;
1375 while ((i >= 0 && isdigit (encoded[i]))
1376 || (i >= 1 && encoded[i] == '_' && isdigit (encoded[i - 1])))
1377 i -= 1;
1378 if (i > 1 && encoded[i] == '_' && encoded[i - 1] == '_')
1379 len0 = i - 1;
1380 else if (encoded[i] == '$')
1381 len0 = i;
1382 }
When we get to 1372, len0 is strlen("44") which is 2. encoded[2 - 1] = "4" is
a digit, and we set i = len0 - 2 = 0.
Now the while loop: i == 0 and encoded[0] is "4", so that passes the first
test, and we subtract 1 from i, setting it to -1. Now i is no longer >= 0
or >= 1, so the while loop escapes. Finally, we hit the final "else if"
encoded[-1] == '$' on line 1380, which causes the observed buffer overflow.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug ada/30639] AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool)
2023-07-15 6:26 [Bug gdb/30639] New: AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool) sihan2021 at iscas dot ac.cn
` (7 preceding siblings ...)
2023-08-15 18:11 ` keiths at redhat dot com
@ 2023-08-16 16:44 ` tromey at sourceware dot org
2023-08-16 19:08 ` cvs-commit at gcc dot gnu.org
2023-08-16 19:11 ` tromey at sourceware dot org
10 siblings, 0 replies; 12+ messages in thread
From: tromey at sourceware dot org @ 2023-08-16 16:44 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=30639
Tom Tromey <tromey at sourceware dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Assignee|unassigned at sourceware dot org |tromey at sourceware dot org
Component|gdb |ada
--- Comment #9 from Tom Tromey <tromey at sourceware dot org> ---
Thanks for the analysis, Keith.
I'll send a patch soon.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug ada/30639] AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool)
2023-07-15 6:26 [Bug gdb/30639] New: AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool) sihan2021 at iscas dot ac.cn
` (8 preceding siblings ...)
2023-08-16 16:44 ` [Bug ada/30639] " tromey at sourceware dot org
@ 2023-08-16 19:08 ` cvs-commit at gcc dot gnu.org
2023-08-16 19:11 ` tromey at sourceware dot org
10 siblings, 0 replies; 12+ messages in thread
From: cvs-commit at gcc dot gnu.org @ 2023-08-16 19:08 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=30639
--- Comment #10 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tom Tromey <tromey@sourceware.org>:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=033bc52bb6190393c8eed80925fa78cc35b40c6d
commit 033bc52bb6190393c8eed80925fa78cc35b40c6d
Author: Tom Tromey <tromey@adacore.com>
Date: Wed Aug 16 11:29:19 2023 -0600
Avoid buffer overflow in ada_decode
A bug report pointed out a buffer overflow in ada_decode, which Keith
helpfully analyzed. ada_decode had a logic error when the input was
all digits. While this isn't valid -- and would probably only appear
in fuzzer tests -- it still should be handled properly.
This patch adds a missing bounds check. Tested with the self-tests in
an asan build.
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30639
Reviewed-by: Keith Seitz <keiths@redhat.com>
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 12+ messages in thread
* [Bug ada/30639] AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool)
2023-07-15 6:26 [Bug gdb/30639] New: AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool) sihan2021 at iscas dot ac.cn
` (9 preceding siblings ...)
2023-08-16 19:08 ` cvs-commit at gcc dot gnu.org
@ 2023-08-16 19:11 ` tromey at sourceware dot org
10 siblings, 0 replies; 12+ messages in thread
From: tromey at sourceware dot org @ 2023-08-16 19:11 UTC (permalink / raw)
To: gdb-prs
https://sourceware.org/bugzilla/show_bug.cgi?id=30639
Tom Tromey <tromey at sourceware dot org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Target Milestone|--- |14.1
Resolution|--- |FIXED
--- Comment #11 from Tom Tromey <tromey at sourceware dot org> ---
Fixed.
--
You are receiving this mail because:
You are on the CC list for the bug.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2023-08-16 19:11 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-15 6:26 [Bug gdb/30639] New: AddressSanitizer: dynamic-stack-buffer-overflow /home/root/sp/Dataset/Binutils/binutils_aflpp/gdb/ada-lang.c:1388:16 in ada_decode[abi:cxx11](char const*, bool, bool) sihan2021 at iscas dot ac.cn
2023-07-15 6:27 ` [Bug gdb/30639] " sihan2021 at iscas dot ac.cn
2023-07-26 19:15 ` keiths at redhat dot com
2023-07-29 5:35 ` sihan2021 at iscas dot ac.cn
2023-07-29 5:49 ` sihan2021 at iscas dot ac.cn
2023-07-29 5:49 ` sihan2021 at iscas dot ac.cn
2023-07-29 5:50 ` sihan2021 at iscas dot ac.cn
2023-07-29 15:15 ` tromey at sourceware dot org
2023-08-15 18:11 ` keiths at redhat dot com
2023-08-16 16:44 ` [Bug ada/30639] " tromey at sourceware dot org
2023-08-16 19:08 ` cvs-commit at gcc dot gnu.org
2023-08-16 19:11 ` tromey at sourceware dot org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).