Explicitly prevent out-of-bounds access to tabPositions array
Use DockCount enum value for the size of the array, and explicitly handle when toDockPos returns DockCount (which it might). Change-Id: Id52399607fb1ae74a24a050de7a8481264c03e47 Fixes: QTBUG-83983 Coverity-Id: 218539 Pick-to: 5.15 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>bb10
parent
8d6d1d6fea
commit
c9df93bf27
|
|
@ -1580,7 +1580,11 @@ void QMainWindowLayout::setTabShape(QTabWidget::TabShape tabShape)
|
|||
|
||||
QTabWidget::TabPosition QMainWindowLayout::tabPosition(Qt::DockWidgetArea area) const
|
||||
{
|
||||
return tabPositions[toDockPos(area)];
|
||||
const auto dockPos = toDockPos(area);
|
||||
if (dockPos < QInternal::DockCount)
|
||||
return tabPositions[dockPos];
|
||||
qWarning("QMainWindowLayout::tabPosition called with out-of-bounds value '%d'", int(area));
|
||||
return QTabWidget::North;
|
||||
}
|
||||
|
||||
void QMainWindowLayout::setTabPosition(Qt::DockWidgetAreas areas, QTabWidget::TabPosition tabPosition)
|
||||
|
|
|
|||
|
|
@ -523,7 +523,7 @@ public:
|
|||
int sep; // separator extent
|
||||
|
||||
#if QT_CONFIG(tabwidget)
|
||||
QTabWidget::TabPosition tabPositions[4];
|
||||
QTabWidget::TabPosition tabPositions[QInternal::DockCount];
|
||||
QTabWidget::TabShape _tabShape;
|
||||
|
||||
QTabWidget::TabShape tabShape() const;
|
||||
|
|
|
|||
Loading…
Reference in New Issue