Ver Fonte

Sicherheitslücke geschlossen

Kolja Strohm há 6 anos atrás
pai
commit
8463f4e514

+ 5 - 5
SpielServer/HistorieSender.cpp

@@ -63,27 +63,27 @@ void HistorieSender::thread()
 				if( k->verbinde( port, *ip ) )
 				{
 					zSS->addSpielHistorieId( min );
-					char ret = 0;
+					unsigned char ret = 0;
 					k->sendeEncrypted( "\5", 1 );
-					k->getNachrichtEncrypted( &ret, 1 );
+					k->getNachrichtEncrypted( (char*)&ret, 1 );
 					if( ret == 1 )
 					{
 						int server = zSS->getId();
 						k->sendeEncrypted( (char*)&server, 4 );
 						k->sendeEncrypted( (char*)&min, 4 );
-						k->getNachrichtEncrypted( &ret, 1 );
+						k->getNachrichtEncrypted( (char*)&ret, 1 );
 						if( ret == 1 )
 							DateiRemove( Text( "../spiel log/" ) += min );
 					}
 					if( ret == 3 )
 					{
-						k->getNachrichtEncrypted( &ret, 1 );
+						k->getNachrichtEncrypted( (char*)&ret, 1 );
 						char *err = new char[ ret ];
 						k->getNachrichtEncrypted( err, ret );
 						delete[] err;
 					}
 					k->sendeEncrypted( "\3", 1 );
-					k->getNachrichtEncrypted( &ret, 1 );
+					k->getNachrichtEncrypted( (char*)&ret, 1 );
 					k->trenne();
 					k->release();
 					zSS->removeSpielHistorieId( min );

+ 6 - 6
SpielServer/KartenLeser.cpp

@@ -64,8 +64,8 @@ bool KartenLeser::setKarteId( int id )
                 klient->getNachrichtEncrypted( (char*)&anz, 4 );
                 for( int i = 0; i < anz; i++ )
                 {
-                    char len = 0;
-                    klient->getNachrichtEncrypted( &len, 1 );
+                    unsigned char len = 0;
+                    klient->getNachrichtEncrypted( (char*)&len, 1 );
                     if( !len )
                         continue;
                     char *pfa = new char[ len + 1 ];
@@ -97,8 +97,8 @@ bool KartenLeser::setKarteId( int id )
         if( ret == 3 )
         {
             retVal = 0;
-            char byte = 0;
-            klient->getNachrichtEncrypted( &byte, 1 );
+            unsigned char byte = 0;
+            klient->getNachrichtEncrypted( (char*)&byte, 1 );
             char *f = new char[ byte + 1 ];
             f[ (int)byte ] = 0;
             klient->getNachrichtEncrypted( f, byte );
@@ -153,8 +153,8 @@ bool KartenLeser::ladeSpielerTeamStruktur( SpielerTeamStruktur *sts )
     sts->teamName = new RCArray< Text >();
     for( int i = 0; i < sts->teamAnzahl; i++ )
     {
-        char len = 0;
-        datei->lese( &len, 1 );
+        unsigned char len = 0;
+        datei->lese( (char*)&len, 1 );
         char *txt = new char[ len + 1 ];
         txt[ (int)len ] = 0;
         datei->lese( txt, len );

+ 2 - 2
SpielServer/SpielErstellt.cpp

@@ -87,8 +87,8 @@ void SpielErstellt::sendeVerbindungsBefehl()
 			}
 			if( ret == 3 )
 			{
-				char len = 0;
-				klient->getNachrichtEncrypted( &len, 1 );
+				unsigned char len = 0;
+				klient->getNachrichtEncrypted( (char*)&len, 1 );
 				char *err = new char[ len ];
 				klient->getNachrichtEncrypted( err, len );
 				delete[] err;

+ 8 - 8
SpielServer/SpielServer.cpp

@@ -706,14 +706,14 @@ void SSAKlient::thread()
 				if( 1 )
 				{
 					klient->sendeEncrypted( "\1", 1 );
-					char nLen = 0;
-					klient->getNachrichtEncrypted( &nLen, 1 );
+					unsigned char nLen = 0;
+					klient->getNachrichtEncrypted( (char*)&nLen, 1 );
 					char *n = new char[ nLen + 1 ];
 					n[ (int)nLen ] = 0;
 					if( nLen )
 						klient->getNachrichtEncrypted( n, nLen );
-					char pLen = 0;
-					klient->getNachrichtEncrypted( &pLen, 1 );
+					unsigned char pLen = 0;
+					klient->getNachrichtEncrypted( (char*)&pLen, 1 );
 					char *p = new char[ pLen + 1 ];
 					p[ (int)pLen ] = 0;
 					if( pLen )
@@ -1565,8 +1565,8 @@ void SSKlient::thread()
 				if( zSpiel )
 				{
 					empfangen->sendeEncrypted( "\1", 1 );
-					char len = 0;
-					empfangen->getNachrichtEncrypted( &len, 1 );
+					unsigned char len = 0;
+					empfangen->getNachrichtEncrypted( (char*)&len, 1 );
 					char *nachricht = new char[ len + 1 ];
 					nachricht[ (int)len ] = 0;
 					if( len )
@@ -1639,7 +1639,7 @@ void SSKlient::thread()
 			case 0xB: // Spiel Nachricht
 				if( 1 )
 				{
-					short len = 0;
+					unsigned short len = 0;
 					empfangen->getNachricht( (char*)&len, 2 );
 					char *bytes = new char[ len ];
 					empfangen->getNachricht( bytes, len );
@@ -1667,7 +1667,7 @@ void SSKlient::thread()
 				if( 1 )
 				{
 					empfangen->sendeEncrypted( "\1", 1 );
-					short len = 0;
+					unsigned short len = 0;
 					empfangen->getNachrichtEncrypted( (char*)&len, 2 );
 					char *bytes = new char[ len ];
 					empfangen->getNachrichtEncrypted( bytes, len );