proper bypass lludp header extra bytes, even if not seen so far

This commit is contained in:
UbitUmarov
2022-01-10 21:21:23 +00:00
parent 9b33ef9c8c
commit fe6bcd79f5
5 changed files with 5 additions and 4 deletions

View File

@@ -1241,15 +1241,17 @@ namespace OpenSim.Region.ClientStack.LindenUDP
return; // Drop undersized packet
}
int bufferDataptr = buffer.Data[5] + 6;
int headerLen = 7;
if (buffer.Data[6] == 0xFF)
if (buffer.Data[bufferDataptr] == 0xFF)
{
if (buffer.Data[7] == 0xFF)
if (buffer.Data[bufferDataptr + 1] == 0xFF)
headerLen = 10;
else
headerLen = 8;
}
headerLen += buffer.Data[5];
if (bufferLen < headerLen)
{
// m_log.WarnFormat(
@@ -1272,8 +1274,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
zerodecodebuffer = zerodecodebufferholder.Data;
}
int packetEnd = bufferLen - 1;
packet = Packet.BuildPacket(buffer.Data, ref packetEnd, zerodecodebuffer);
packet = Packet.BuildPacket(buffer.Data, ref bufferLen, zerodecodebuffer);
if(zerodecodebufferholder != null)
FreeUDPBuffer(zerodecodebufferholder);
}