secure clientGroup pointer accesses

BUG: 251388
CCBUG: 195907
CCBUG: 233756

svn path=/trunk/KDE/kdebase/workspace/; revision=1183245
This commit is contained in:
Thomas Lübking 2010-10-06 17:40:15 +00:00
parent f7c3dc23df
commit 9b10dc7974

View file

@ -233,6 +233,8 @@ QList< ClientGroupItem > Bridge::clientGroupItems() const
long Bridge::itemId( int index ) long Bridge::itemId( int index )
{ {
if( !c->clientGroup() )
return 0;
const ClientList list = c->clientGroup()->clients(); const ClientList list = c->clientGroup()->clients();
return reinterpret_cast<long>( list.at( index )); return reinterpret_cast<long>( list.at( index ));
} }
@ -246,12 +248,14 @@ int Bridge::visibleClientGroupItem()
void Bridge::setVisibleClientGroupItem( int index ) void Bridge::setVisibleClientGroupItem( int index )
{ {
c->clientGroup()->setVisible( index ); if( c->clientGroup() )
c->clientGroup()->setVisible( index );
} }
void Bridge::moveItemInClientGroup( int index, int before ) void Bridge::moveItemInClientGroup( int index, int before )
{ {
c->clientGroup()->move( index, before ); if( c->clientGroup() )
c->clientGroup()->move( index, before );
} }
void Bridge::moveItemToClientGroup( long itemId, int before ) void Bridge::moveItemToClientGroup( long itemId, int before )
@ -262,17 +266,21 @@ void Bridge::moveItemToClientGroup( long itemId, int before )
kWarning(1212) << "****** ARBITRARY CODE EXECUTION ATTEMPT DETECTED ******"; kWarning(1212) << "****** ARBITRARY CODE EXECUTION ATTEMPT DETECTED ******";
return; return;
} }
c->workspace()->moveItemToClientGroup( item->clientGroup(), item->clientGroup()->indexOfClient( item ), if( item->clientGroup() )
c->workspace()->moveItemToClientGroup( item->clientGroup(), item->clientGroup()->indexOfClient( item ),
c->clientGroup(), before ); c->clientGroup(), before );
} }
void Bridge::removeFromClientGroup( int index, const QRect& newGeom ) void Bridge::removeFromClientGroup( int index, const QRect& newGeom )
{ {
c->clientGroup()->remove( index, newGeom ); if( c->clientGroup() )
c->clientGroup()->remove( index, newGeom );
} }
void Bridge::closeClientGroupItem( int index ) void Bridge::closeClientGroupItem( int index )
{ {
if( !c->clientGroup() )
return;
const ClientList list = c->clientGroup()->clients(); const ClientList list = c->clientGroup()->clients();
if( index >= 0 || index <= list.count() ) if( index >= 0 || index <= list.count() )
list.at( index )->closeWindow(); list.at( index )->closeWindow();
@ -280,12 +288,14 @@ void Bridge::closeClientGroupItem( int index )
void Bridge::closeAllInClientGroup() void Bridge::closeAllInClientGroup()
{ {
c->clientGroup()->closeAll(); if( c->clientGroup() )
c->clientGroup()->closeAll();
} }
void Bridge::displayClientMenu( int index, const QPoint& pos ) void Bridge::displayClientMenu( int index, const QPoint& pos )
{ {
c->clientGroup()->displayClientMenu( index, pos ); if( c->clientGroup() )
c->clientGroup()->displayClientMenu( index, pos );
} }
KDecoration::WindowOperation Bridge::buttonToWindowOperation( Qt::MouseButtons button ) KDecoration::WindowOperation Bridge::buttonToWindowOperation( Qt::MouseButtons button )