Skip to content

Commit c8aa761

Browse files
fix
Adding bounds check for reading NetworkAnimator parameters.
1 parent 347c00f commit c8aa761

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

com.unity.netcode.gameobjects/Runtime/Components/NetworkAnimator.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1377,6 +1377,13 @@ private unsafe void ReadParameters(FastBufferReader reader)
13771377
while (totalParametersRead < totalParametersToRead)
13781378
{
13791379
ByteUnpacker.ReadValuePacked(reader, out uint parameterIndex);
1380+
1381+
// Do bounds check prior to getting the element as a reference at that index.
1382+
if (parameterIndex >= m_CachedAnimatorParameters.Length)
1383+
{
1384+
NetworkManager.Log.ErrorServer(new Logging.Context(LogLevel.Error, $"[{nameof(NetworkAnimator)}][{name}] Invalid index of {parameterIndex} was received when there are only {m_CachedAnimatorParameters.Length} parameters. Ignoring the remainger of this {nameof(ParametersUpdateMessage)}!"));
1385+
return;
1386+
}
13801387
ref var cacheValue = ref UnsafeUtility.ArrayElementAsRef<AnimatorParamCache>(m_CachedAnimatorParameters.GetUnsafePtr(), (int)parameterIndex);
13811388
var hash = cacheValue.Hash;
13821389
if (cacheValue.Type == AnimationParamEnumWrapper.AnimatorControllerParameterInt)

0 commit comments

Comments
 (0)