Fix segfault resulting from empty print prompt
I have found a way to segfault lldb in 7 keystrokes! Steps to reproduce:
- Launch lldb
- Type print and hit enter. lldb will now prompt you to type a list of expressions, followed by an empty line.
- Hit enter, indicating the end of your input.
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.