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>
This commit is contained in:
Peter Wu 2017-11-11 01:15:32 +00:00 committed by Stig Bjørlykke
parent 0c382106f8
commit 7cbbbe0bde
1 changed files with 4 additions and 2 deletions

View File

@ -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())
{