Skip to content

Commit d661adb

Browse files
authored
Merge branch 'TrinityCore:master' into master
2 parents 85cdb09 + 0097620 commit d661adb

5 files changed

Lines changed: 24 additions & 13 deletions

File tree

WowPacketParser/Enums/ClientVersionBuild.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,6 +694,7 @@ public enum ClientVersionBuild
694694
V12_0_5_67314 = 67314,
695695
V12_0_5_67403 = 67403,
696696
V12_0_5_67451 = 67451,
697+
V12_0_5_67602 = 67602,
697698

698699
// Classic
699700
V1_13_2_31446 = 31446,

WowPacketParser/Enums/Version/Opcodes.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -882,6 +882,7 @@ public static ClientVersionBuild GetOpcodeDefiningBuild(ClientVersionBuild build
882882
case ClientVersionBuild.V12_0_5_67314:
883883
case ClientVersionBuild.V12_0_5_67403:
884884
case ClientVersionBuild.V12_0_5_67451:
885+
case ClientVersionBuild.V12_0_5_67602:
885886
return ClientVersionBuild.V12_0_5_66741;
886887
case ClientVersionBuild.V1_13_2_31446:
887888
case ClientVersionBuild.V1_13_2_31650:

WowPacketParser/Enums/Version/UpdateFields.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,6 +1053,7 @@ private static ClientVersionBuild GetUpdateFieldDictionaryBuild(ClientVersionBui
10531053
case ClientVersionBuild.V12_0_5_67314:
10541054
case ClientVersionBuild.V12_0_5_67403:
10551055
case ClientVersionBuild.V12_0_5_67451:
1056+
case ClientVersionBuild.V12_0_5_67602:
10561057
{
10571058
return ClientVersionBuild.V12_0_5_66741;
10581059
}

WowPacketParser/Misc/ClientVersion.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,7 @@ public static class ClientVersion
696696
new KeyValuePair<ClientVersionBuild, DateTime>(ClientVersionBuild.V12_0_5_67314, new DateTime(2026, 05, 01)),
697697
new KeyValuePair<ClientVersionBuild, DateTime>(ClientVersionBuild.V12_0_5_67403, new DateTime(2026, 05, 07)),
698698
new KeyValuePair<ClientVersionBuild, DateTime>(ClientVersionBuild.V12_0_5_67451, new DateTime(2026, 05, 08)),
699+
new KeyValuePair<ClientVersionBuild, DateTime>(ClientVersionBuild.V12_0_5_67602, new DateTime(2026, 05, 16)),
699700

700701
// no classic info, pkt contain build in header
701702
};
@@ -1381,6 +1382,7 @@ public static ClientVersionBuild GetVersionDefiningBuild(ClientVersionBuild buil
13811382
case ClientVersionBuild.V12_0_5_67314:
13821383
case ClientVersionBuild.V12_0_5_67403:
13831384
case ClientVersionBuild.V12_0_5_67451:
1385+
case ClientVersionBuild.V12_0_5_67602:
13841386
return ClientVersionBuild.V12_0_0_65390;
13851387
//Classic
13861388
case ClientVersionBuild.V1_13_2_31446:

WowPacketParser/Parsing/Parsers/UpdateHandler.cs

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ private static Dictionary<int, UpdateField> ReadValuesUpdateBlock(Packet packet,
375375
{
376376
int currentPosition = ++i;
377377
UpdateField updateField;
378-
if (mask[currentPosition])
378+
if (currentPosition < mask.Count && mask[currentPosition])
379379
updateField = packet.ReadUpdateField();
380380
else if (oldValues == null || !oldValues.TryGetValue(currentPosition, out updateField))
381381
updateField = new UpdateField(0);
@@ -393,7 +393,7 @@ private static Dictionary<int, UpdateField> ReadValuesUpdateBlock(Packet packet,
393393
{
394394
bool hasGuidValue = false;
395395
for (var guidPart = 0; guidPart < guidSize; ++guidPart)
396-
if (mask[start + guidI * guidSize + guidPart])
396+
if (start + guidI * guidSize + guidPart < mask.Count && mask[start + guidI * guidSize + guidPart])
397397
hasGuidValue = true;
398398

399399
if (!hasGuidValue)
@@ -412,7 +412,7 @@ private static Dictionary<int, UpdateField> ReadValuesUpdateBlock(Packet packet,
412412
}
413413
else
414414
{
415-
ulong low = (fieldData[guidI * guidSize + 1].UInt32Value << 32);
415+
ulong low = fieldData[guidI * guidSize + 1].UInt32Value;
416416
low <<= 32;
417417
low |= fieldData[guidI * guidSize + 0].UInt32Value;
418418
ulong high = fieldData[guidI * guidSize + 3].UInt32Value;
@@ -432,8 +432,8 @@ private static Dictionary<int, UpdateField> ReadValuesUpdateBlock(Packet packet,
432432
for (var quatI = 0; quatI < quaternionCount; ++quatI)
433433
{
434434
bool hasQuatValue = false;
435-
for (var guidPart = 0; guidPart < 4; ++guidPart)
436-
if (mask[start + quatI * 4 + guidPart])
435+
for (var quatPart = 0; quatPart < 4; ++quatPart)
436+
if (start + start + quatI * 4 + quatPart < mask.Count && mask[start + quatI * 4 + quatPart])
437437
hasQuatValue = true;
438438

439439
if (!hasQuatValue)
@@ -451,8 +451,8 @@ private static Dictionary<int, UpdateField> ReadValuesUpdateBlock(Packet packet,
451451
for (var quatI = 0; quatI < quaternionCount; ++quatI)
452452
{
453453
bool hasQuatValue = false;
454-
for (var guidPart = 0; guidPart < 2; ++guidPart)
455-
if (mask[start + quatI * 2 + guidPart])
454+
for (var quatPart = 0; quatPart < 2; ++quatPart)
455+
if (start + quatI * 2 + quatPart < mask.Count && mask[start + quatI * 2 + quatPart])
456456
hasQuatValue = true;
457457

458458
if (!hasQuatValue)
@@ -469,38 +469,44 @@ private static Dictionary<int, UpdateField> ReadValuesUpdateBlock(Packet packet,
469469
case UpdateFieldType.Uint:
470470
{
471471
for (int k = 0; k < fieldData.Count; ++k)
472-
if (mask[start + k] && (!isCreating || fieldData[k].UInt32Value != 0))
472+
{
473+
if (start + k < mask.Count && mask[start + k] && (!isCreating || fieldData[k].UInt32Value != 0))
473474
{
474475
var name = k > 0 ? key + " + " + k : key;
475476
updateValues.Ints[name] = packet.AddValue(name, fieldData[k].UInt32Value, index);
476477
}
478+
}
477479
break;
478480
}
479481
case UpdateFieldType.Int:
480482
{
481483
for (int k = 0; k < fieldData.Count; ++k)
482-
if (mask[start + k] && (!isCreating || fieldData[k].UInt32Value != 0))
484+
{
485+
if (start + k < mask.Count && mask[start + k] && (!isCreating || fieldData[k].UInt32Value != 0))
483486
{
484487
var name = k > 0 ? key + " + " + k : key;
485488
updateValues.Ints[name] = packet.AddValue(name, fieldData[k].Int32Value, index);
486489
}
490+
}
487491
break;
488492
}
489493
case UpdateFieldType.Float:
490494
{
491495
for (int k = 0; k < fieldData.Count; ++k)
492-
if (mask[start + k] && (!isCreating || fieldData[k].UInt32Value != 0))
496+
{
497+
if (start + k < mask.Count && mask[start + k] && (!isCreating || fieldData[k].UInt32Value != 0))
493498
{
494499
var name = k > 0 ? key + " + " + k : key;
495500
updateValues.Floats[name] = packet.AddValue(name, fieldData[k].FloatValue, index);
496501
}
502+
}
497503
break;
498504
}
499505
case UpdateFieldType.Bytes:
500506
{
501507
for (int k = 0; k < fieldData.Count; ++k)
502508
{
503-
if (mask[start + k] && (!isCreating || fieldData[k].UInt32Value != 0))
509+
if (start + k < mask.Count && mask[start + k] && (!isCreating || fieldData[k].UInt32Value != 0))
504510
{
505511
byte[] intBytes = BitConverter.GetBytes(fieldData[k].UInt32Value);
506512
var name = k > 0 ? key + " + " + k : key;
@@ -514,7 +520,7 @@ private static Dictionary<int, UpdateField> ReadValuesUpdateBlock(Packet packet,
514520
{
515521
for (int k = 0; k < fieldData.Count; ++k)
516522
{
517-
if (mask[start + k] && (!isCreating || fieldData[k].UInt32Value != 0))
523+
if (start + k < mask.Count && mask[start + k] && (!isCreating || fieldData[k].UInt32Value != 0))
518524
{
519525
var name = k > 0 ? key + " + " + k : key;
520526
updateValues.Ints[name] = fieldData[k].UInt32Value;
@@ -542,7 +548,7 @@ private static Dictionary<int, UpdateField> ReadValuesUpdateBlock(Packet packet,
542548
}
543549
default:
544550
for (int k = 0; k < fieldData.Count; ++k)
545-
if (mask[start + k] && (!isCreating || fieldData[k].UInt32Value != 0))
551+
if (start + k < mask.Count && mask[start + k] && (!isCreating || fieldData[k].UInt32Value != 0))
546552
packet.AddValue(k > 0 ? key + " + " + k : key, fieldData[k].UInt32Value + "/" + fieldData[k].FloatValue, index);
547553
break;
548554
}

0 commit comments

Comments
 (0)