[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