Skip to content

Commit 5adf1f9

Browse files
committed
Bugfix for playerhelper GetPlayerInfo on negative team & slot values
1 parent 3113ea0 commit 5adf1f9

File tree

3 files changed

+42
-4
lines changed

3 files changed

+42
-4
lines changed

Archipelago.MultiClient.Net.Tests/PlayerHelperFixture.cs

+38
Original file line numberDiff line numberDiff line change
@@ -203,5 +203,43 @@ public void Should_not_crash_when_room_update_does_not_contain_players()
203203
Assert.That(sut.Players.Count, Is.EqualTo(1));
204204
Assert.That(sut.Players[0].Count, Is.EqualTo(2));
205205
}
206+
207+
[TestCase(-1, -1, null)]
208+
[TestCase(-1, 0, null)]
209+
[TestCase(-1, 1, null)]
210+
[TestCase(-1, 2, null)]
211+
[TestCase(0, -1, null)]
212+
[TestCase(0, 0, "Server")]
213+
[TestCase(0, 1, "Player 1")]
214+
[TestCase(0, 2, null)]
215+
[TestCase(1, -1, null)]
216+
[TestCase(1, 0, null)]
217+
[TestCase(1, 1, null)]
218+
[TestCase(1, 2, null)]
219+
public void GetPlayerInfo_should_not_crash_on_values_out_of_range(int team, int slot, string expectedPlayerNameOrNull)
220+
{
221+
var socket = Substitute.For<IArchipelagoSocketHelper>();
222+
var connectionInfo = Substitute.For<IConnectionInfoProvider>();
223+
224+
var sut = new PlayerHelper(socket, connectionInfo);
225+
226+
var connectedPacket = new ConnectedPacket
227+
{
228+
Players = new[] {
229+
new NetworkPlayer { Name = "Player 1", Alias = "One", Team = 0, Slot = 1 }
230+
}
231+
};
232+
233+
socket.PacketReceived += Raise.Event<ArchipelagoSocketHelperDelagates.PacketReceivedHandler>(connectedPacket);
234+
235+
var player = new PlayerInfo();
236+
237+
Assert.DoesNotThrow(() => player = sut.GetPlayerInfo(team, slot));
238+
239+
if (expectedPlayerNameOrNull == null)
240+
Assert.That(player, Is.Null);
241+
else
242+
Assert.That(player.Name, Is.EqualTo(expectedPlayerNameOrNull));
243+
}
206244
}
207245
}

Archipelago.MultiClient.Net/Archipelago.MultiClient.Net.csproj

+3-3
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
<PackageReadmeFile>README.md</PackageReadmeFile>
1111
<RepositoryUrl>https://github.com/ArchipelagoMW/Archipelago.MultiClient.Net</RepositoryUrl>
1212
<RepositoryType>git</RepositoryType>
13-
<AssemblyVersion>6.3.0.0</AssemblyVersion>
14-
<FileVersion>6.3.0.0</FileVersion>
15-
<Version>6.3.0</Version>
13+
<AssemblyVersion>6.3.1.0</AssemblyVersion>
14+
<FileVersion>6.3.1.0</FileVersion>
15+
<Version>6.3.1</Version>
1616
<PackageLicenseExpression>MIT</PackageLicenseExpression>
1717
<PackageRequireLicenseAcceptance>False</PackageRequireLicenseAcceptance>
1818
<PackageIcon>blue-icon.png</PackageIcon>

Archipelago.MultiClient.Net/Helpers/PlayerHelper.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public class PlayerHelper : IPlayerHelper
100100

101101
/// <inheritdoc/>
102102
public PlayerInfo GetPlayerInfo(int team, int slot) =>
103-
players.Count > team && players[team].Count > slot
103+
team >= 0 && slot >= 0 && players.Count > team && players[team].Count > slot
104104
? players[team][slot]
105105
: null;
106106

0 commit comments

Comments
 (0)