Skip to content

Commit 5db7eb7

Browse files
committed
Added better header safety, public key-grab API and fixed NetworkConfig bit issue
1 parent 2927f05 commit 5db7eb7

File tree

4 files changed

+203
-89
lines changed

4 files changed

+203
-89
lines changed

MLAPI/Data/NetworkConfig.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,7 @@ public ulong GetConfig(bool cache = true)
353353
writer.WriteBool(EnableSceneSwitching);
354354
writer.WriteBool(SignKeyExchange);
355355
writer.WriteBits((byte)AttributeMessageMode, 3);
356+
writer.WritePadBits();
356357

357358
if (cache)
358359
{

MLAPI/MonoBehaviours/Core/NetworkingManager.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -811,22 +811,26 @@ private void HandleIncomingData(uint clientId, byte[] data, int channelId, int t
811811
using (BitStream inputStream = new BitStream(data))
812812
{
813813
inputStream.SetLength(totalSize);
814-
//Debug.LogError(totalSize);
815-
//string s = string.Join(" ", data.Take(totalSize).Select(b => b.ToString()).ToArray());
816-
//Debug.LogError(s);
817814
byte messageType;
818815
using (BitStream messageStream = MessageManager.UnwrapMessage(inputStream, clientId, out messageType))
819816
{
820817
if (messageStream == null)
821818
{
822-
if (LogHelper.CurrentLogLevel <= LogLevel.Normal) LogHelper.LogInfo("Message unwrap could not be completed. Was the header corrupt? Crypto error?");
819+
if (LogHelper.CurrentLogLevel <= LogLevel.Error) LogHelper.LogError("Message unwrap could not be completed. Was the header corrupt? Crypto error?");
820+
return;
821+
}
822+
else if (messageType == MLAPIConstants.INVALID)
823+
{
824+
if (LogHelper.CurrentLogLevel <= LogLevel.Error) LogHelper.LogError("Message unwrap read an invalid messageType");
825+
return;
823826
}
827+
824828
uint headerByteSize = (uint)Arithmetic.VarIntSize(messageType);
825829
NetworkProfiler.StartEvent(TickType.Receive, (uint)(totalSize - headerByteSize), channelId, messageType);
826830

827831
if (LogHelper.CurrentLogLevel <= LogLevel.Developer) LogHelper.LogInfo("Data Header: messageType=" + messageType);
828832

829-
//Client tried to send a network message that was not the connection request before he was accepted.
833+
// Client tried to send a network message that was not the connection request before he was accepted.
830834
if (isServer && (NetworkConfig.EnableEncryption && PendingClients.ContainsKey(clientId) && PendingClients[clientId].ConnectionState == PendingClient.State.PendingHail && messageType != MLAPIConstants.MLAPI_CERTIFICATE_HAIL_RESPONSE) ||
831835
(PendingClients.ContainsKey(clientId) && PendingClients[clientId].ConnectionState == PendingClient.State.PendingConnection && messageType != MLAPIConstants.MLAPI_CONNECTION_REQUEST))
832836
{
@@ -899,6 +903,9 @@ private void HandleIncomingData(uint clientId, byte[] data, int channelId, int t
899903
case MLAPIConstants.MLAPI_GREETINGS:
900904
if (isClient) InternalMessageHandler.HandleGreetings(clientId, messageStream, channelId);
901905
break;
906+
default:
907+
if (LogHelper.CurrentLogLevel <= LogLevel.Error) LogHelper.LogError("Read unrecognized messageType " + messageType);
908+
break;
902909
}
903910

904911
#endregion

0 commit comments

Comments
 (0)