[prev in list] [next in list] [prev in thread] [next in thread]
List: kwin
Subject: [PATCH] insecure clientGroup pointer in bridge.cpp
From: Thomas =?iso-8859-1?q?L=FCbking?= <thomas.luebking () web ! de>
Date: 2010-10-05 22:25:23
Message-ID: 201010060025.24016.thomas.luebking () web ! de
[Download RAW message or body]
the patch atached to bug #251388 should fix this one & probably #195907,
#233756 and dupes...
attached here has well :-)
Cheers
["fix_cg_in_bridge.diff" (text/x-patch)]
Index: bridge.cpp
===================================================================
--- bridge.cpp (Revision 1175747)
+++ bridge.cpp (Arbeitskopie)
@@ -233,6 +233,8 @@
long Bridge::itemId( int index )
{
+ if( !c->clientGroup() )
+ return 0;
const ClientList list = c->clientGroup()->clients();
return reinterpret_cast<long>( list.at( index ));
}
@@ -246,12 +248,14 @@
void Bridge::setVisibleClientGroupItem( int index )
{
- c->clientGroup()->setVisible( index );
+ if( c->clientGroup() )
+ c->clientGroup()->setVisible( index );
}
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 )
@@ -262,17 +266,21 @@
kWarning(1212) << "****** ARBITRARY CODE EXECUTION ATTEMPT DETECTED ******";
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 );
}
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 )
{
+ if( !c->clientGroup() )
+ return;
const ClientList list = c->clientGroup()->clients();
if( index >= 0 || index <= list.count() )
list.at( index )->closeWindow();
@@ -280,12 +288,14 @@
void Bridge::closeAllInClientGroup()
{
- c->clientGroup()->closeAll();
+ if( c->clientGroup() )
+ c->clientGroup()->closeAll();
}
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 )
_______________________________________________
kwin mailing list
kwin@kde.org
https://mail.kde.org/mailman/listinfo/kwin
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic