[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
history-search-* and undo lists
From: |
Grisha Levit |
Subject: |
history-search-* and undo lists |
Date: |
Fri, 18 Oct 2024 16:22:01 -0400 |
There's some issue with undo list handling in history-search-* commands:
Doing a successful search with a line that has an undo list causes the
undo entries from that list to leaked:
HISTFILE= INPUTRC=/ bash --norc -in <<< $'X\nX\e[5~'
=================================================================
ERROR: LeakSanitizer: detected memory leaks
Direct leak of 32 byte(s) in 1 object(s) allocated from:
#2 alloc_undo_entry undo.c:75:23
#3 rl_add_undo undo.c:92:10
#4 rl_insert_text text.c:114:2
#5 _rl_insert_char text.c:935:7
#6 rl_insert text.c:989:42
#7 _rl_dispatch_subseq readline.c:941:8
#8 _rl_dispatch readline.c:876:10
#9 readline_internal_char readline.c:690:11
#10 readline_internal_charloop readline.c:737:11
#11 readline_internal readline.c:749:18
#12 readline readline.c:387:11
...and running the search again causes a use-after-free when accessing
prev_line_found in rl_history_search_internal:
HISTFILE= INPUTRC=/ bash --norc -in <<< $'X\nX\nX\e[5~\e[5~'
=================================================================
ERROR: AddressSanitizer: heap-use-after-free on address 0xe53d8842ae50
READ of size 1 at 0xe53d8842ae50 thread T0
#0 rl_history_search_internal search.c:634:30
#1 rl_history_search_backward search.c:746:11
#2 _rl_dispatch_subseq readline.c:941:8
0xe53d8842ae50 is 0 bytes in 2-byte region [0xe53d8842ae50,0xe53d8842ae52)
freed by thread T0 here:
#2 _rl_maybe_replace_line misc.c:344:7
#3 rl_history_search_internal search.c:609:3
#4 rl_history_search_backward search.c:746:11
#5 _rl_dispatch_subseq readline.c:941:8
previously allocated by thread T0 here:
#2 alloc_history_entry history.c:296:25
#3 add_history istory.c:428:10
#4 really_add_history bashhist.c:963:3
#5 bash_add_history bashhist.c:948:5
...or when using revert-all-newline:
echo 'set revert-all-at-newline on' > i
HISTFILE= INPUTRC=i bash --norc -in <<< $'X\nX\e[5~\exnext-history\nX'
=================================================================
ERROR: AddressSanitizer: heap-use-after-free on address 0xef01e9428830
READ of size 8 at 0xef01e9428830 thread T0
#0 _rl_free_undo_list undo.c:106:16
#1 rl_free_undo_list undo.c:122:3
#2 readline_common_teardown readline.c:507:5
#3 readline_internal_teardown readline.c:518:3
0xef01e9428830 is 0 bytes in 32-byte region [0xef01e9428830,0xef01e9428850)
freed by thread T0 here:
#2 rl_do_undo undo.c:267:7
#3 _rl_revert_previous_lines misc.c:500:6
#4 _rl_revert_all_lines misc.c:530:3
#5 readline_common_teardown readline.c:502:5
#6 readline_internal_teardown readline.c:518:3
previously allocated by thread T0 here:
#2 alloc_undo_entry undo.c:75:23
#3 rl_add_undo undo.c:92:10
#4 rl_end_undo_group undo.c:305:3
#5 _rl_replace_text text.c:205:3
#6 make_history_line_current search.c:134:3
#7 rl_history_search_internal search.c:667:3
#8 rl_history_search_backward search.c:746:11
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- history-search-* and undo lists,
Grisha Levit <=