You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
RDP Audio & Format Hardening (RDPAudioFormat / RDPAudioSession / RDPAudioPlayer):
Eliminated a 16-bit integer overflow in RDPAudioFormat.isPCM16Bit when validating channelCount * 2, bounded channel counts (1...8) and sample rates (8,000...192,000 Hz), routed RDPSND packets through RDPStaticVirtualChannelReassembler so fragmented audio PDUs never corrupt the stream, and hardened AVAudioEngineConfigurationChange recovery.
Replaced repeated subtraction in remainderLittleEndian with $O(\text{bits})$ bitwise shift-and-subtract long division and enforced activeModulus.last != 0 so malformed server RSA blobs cannot stall the preflight thread.
Added lstat symlink inspection in resolveSandboxedURL to block dangling symlinks escaping the shared root, changed handleDelete on directories to use POSIX rmdir() (returning STATUS_DIRECTORY_NOT_EMPTY instead of recursive deletion), bounded open file handles at 4,096 with collision-free ID allocation, and routed RDPDR packets through static virtual channel reassembly.
Added automatic buffer reset (keepingCapacity: false) on any malformed fragment, bounded dynamic channel cbTotalDataSize to 64 MB, and fixed MCSDisconnectProviderUltimatumPDU slice index handling.
Replaced aligned UInt16 pointer loads with .loadUnaligned(as: UInt16.self) in RFBClient, eliminated intermediate Data copies in Tight rectangle decoding, freed readBuffer / decryptedReadBuffer / lastPublishedFiles capacities on disconnect, and replaced uncancelled asyncAfter closures with cancellable DispatchWorkItems in RDPClipboardFileDownloader.