diff options
author | Pavel Labath <labath@google.com> | 2017-05-05 11:51:21 +0000 |
---|---|---|
committer | Pavel Labath <labath@google.com> | 2017-05-05 11:51:21 +0000 |
commit | 38c2059aec111174bcdc06c8006d998c513c8b8c (patch) | |
tree | f1d168b7952aadc8ed2490bf271f8ad4cf8b28fb /lldb/packages/Python/lldbsuite/test/python_api/thread | |
parent | 1b74f8c51f7fb44d47336f7431b427326230d47e (diff) | |
download | bcm5719-llvm-38c2059aec111174bcdc06c8006d998c513c8b8c.tar.gz bcm5719-llvm-38c2059aec111174bcdc06c8006d998c513c8b8c.zip |
Fix segfault resulting from empty print prompt
Summary:
I have found a way to segfault lldb in 7 keystrokes! Steps to reproduce:
1) Launch lldb
2) Type `print` and hit enter. lldb will now prompt you to type a list of
expressions, followed by an empty line.
3) Hit enter, indicating the end of your input.
4) Segfault!
After some investigation, I've found the issue in Host/common/Editline.cpp.
Editline::MoveCursor() relies on m_input_lines not being empty when the `to`
argument is CursorPosition::BlockEnd. This scenario, as far as I can tell,
occurs in one specific instance: In Editline::EndOrAddLineCommand() when the
list of lines being processed contains exactly one string (""). Meeting this
condition is fairly simple, I have posted steps to reproduce above.
Reviewers: krytarowski, zturner, labath
Reviewed By: labath
Subscribers: scott.smith, lldb-commits
Differential Revision: https://reviews.llvm.org/D32421
Patch by Alex Langford.
llvm-svn: 302225
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/python_api/thread')
0 files changed, 0 insertions, 0 deletions