From 391cdf6c2595060ff3b2adb54f5b2fc8ebd7cc04 Mon Sep 17 00:00:00 2001 From: "A. Wilcox" <AWilcox@Wilcox-Tech.com> Date: Mon, 3 Jun 2019 00:16:30 -0500 Subject: [PATCH] multilineedit: handle unterminated mIRC codes Currently, if an unterminated mIRC code is pasted into Quassel, trying to go through input line history will cause a deadlock. This breaks the loop at the cost of possibly mangling the formatting of the line somewhat. This is seen as more acceptable than locking up, and the line is invalid anyway. Reproducer: ```sh printf '\00303,08HONK' | xclip -selection clipboard ``` Paste into Quassel, send, press Up arrow key. --- src/uisupport/multilineedit.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/uisupport/multilineedit.cpp b/src/uisupport/multilineedit.cpp index 133a2433..b13834c5 100644 --- a/src/uisupport/multilineedit.cpp +++ b/src/uisupport/multilineedit.cpp @@ -645,6 +645,10 @@ QString MultiLineEdit::convertMircCodesToHtml(const QString &text) } posRight = text.indexOf(mircCode.cap(), posRight + 1); + if (posRight == -1) { + words << text.mid(posLeft); + break; // unclosed color code; can't process + } words << text.mid(posLeft, posRight + 1 - posLeft); posLeft = posRight + 1; } -- 2.21.0