diff options
author | Peter Wu <peter@lekensteyn.nl> | 2017-11-11 01:15:32 +0000 |
---|---|---|
committer | Stig Bjørlykke <stig@bjorlykke.org> | 2017-11-11 08:58:25 +0000 |
commit | 7cbbbe0bde475786d661fe887ee2340a269f1063 (patch) | |
tree | f2ae5a1690edc1b6cd50ecc817278e3a0081a544 /ui | |
parent | 0c382106f8504315039510e4adc67e0e5c2003cd (diff) |
Qt: avoid undefined behavior in ProtoTree::eventFilter
UBSan complains about "ev" being a "QEvent" rather than a QMouseEvent.
Change-Id: I9e59ffbe16df2ef20b7856e6dd2d9ef246632de6
Fixes: v2.5.0rc0-1608-g4d6454e180 ("Qt: Drag n Drop Filter expression from Packet Tree")
Reviewed-on: https://code.wireshark.org/review/24338
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot
Reviewed-by: Stig Bjørlykke <stig@bjorlykke.org>
Diffstat (limited to 'ui')
-rw-r--r-- | ui/qt/proto_tree.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/ui/qt/proto_tree.cpp b/ui/qt/proto_tree.cpp index 6cc438e211..b1620b4c68 100644 --- a/ui/qt/proto_tree.cpp +++ b/ui/qt/proto_tree.cpp @@ -708,15 +708,17 @@ bool ProtoTree::eventFilter(QObject * obj, QEvent * event) if ( cap_file_ && event->type() != QEvent::MouseButtonPress && event->type() != QEvent::MouseMove ) return QTreeWidget::eventFilter(obj, event); - QMouseEvent * ev = (QMouseEvent *)event; - if ( event->type() == QEvent::MouseButtonPress ) { + QMouseEvent * ev = (QMouseEvent *)event; + if ( ev->buttons() & Qt::LeftButton ) dragStartPosition = ev->pos(); } else if ( event->type() == QEvent::MouseMove ) { + QMouseEvent * ev = (QMouseEvent *)event; + if ( ( ev->buttons() & Qt::LeftButton ) && (ev->pos() - dragStartPosition).manhattanLength() > QApplication::startDragDistance()) { |