Changes

380 bytes added ,  01:06, 25 November 2022
Line 1,062: Line 1,062:     
In fixed versions the arraycount field is now validated.
 
In fixed versions the arraycount field is now validated.
 +
 +
SessionProtocol uses ReliableSlidingWindow MessageHeader, with a maximum message size of 0x100. The allocated size used for the above u64 array is also 0x100-bytes. Hence, when triggering a buf overflow the data after the buffer is uncontrolled data from the SessionProtocol object.
 
| Stack buffer overflow triggered by a Pia SessionProtocol message.
 
| Stack buffer overflow triggered by a Pia SessionProtocol message.
 
| v5.9.3, see above.
 
| v5.9.3, see above.
Line 1,083: Line 1,085:  
| nn::pia::session::JoinMeshJob::SetStationDataList OOB read/write/vfunc-call
 
| nn::pia::session::JoinMeshJob::SetStationDataList OOB read/write/vfunc-call
 
| <code>nn::pia::session::JoinMeshJob::SetStationDataList</code>is called by <code>nn::pia::session::MeshProtocol::ParseJoinResponse(nn::pia::transport::ReceivedMessageAccessor const&)></code> with the ReceivedMessageAccessor buffer.
 
| <code>nn::pia::session::JoinMeshJob::SetStationDataList</code>is called by <code>nn::pia::session::MeshProtocol::ParseJoinResponse(nn::pia::transport::ReceivedMessageAccessor const&)></code> with the ReceivedMessageAccessor buffer.
SetStationDataList will update state and immediately return if the join was denied. It will also validate the num_mesh_stations field against state.
+
SetStationDataList will update state and immediately return if the join was denied. It will also validate the num_mesh_stations field against state. ParseJoinResponse also essentially verifies that the message was received from the host device.
    
The input buffer size is ignored.
 
The input buffer size is ignored.