libbinder: Fix out-of-bounds abort in RpcServer

Bug: 237639446
Test: atest binderRpcTest
Change-Id: Ic35a75fe2b218ef024c6e5e33901813a454243d6
diff --git a/libs/binder/RpcServer.cpp b/libs/binder/RpcServer.cpp
index 1cd1fd3..f2a620d 100644
--- a/libs/binder/RpcServer.cpp
+++ b/libs/binder/RpcServer.cpp
@@ -420,7 +420,9 @@
             session->setMaxIncomingThreads(server->mMaxThreads);
             if (!session->setProtocolVersion(protocolVersion)) return;
 
-            if (server->mSupportedFileDescriptorTransportModes.test(
+            if (header.fileDescriptorTransportMode <
+                        server->mSupportedFileDescriptorTransportModes.size() &&
+                server->mSupportedFileDescriptorTransportModes.test(
                         header.fileDescriptorTransportMode)) {
                 session->setFileDescriptorTransportMode(
                         static_cast<RpcSession::FileDescriptorTransportMode>(