]> source.dussan.org Git - tigervnc.git/commit
Fix crash from integer overflow in SMsgReader::readClientCutText
authorMichal Srb <michalsrb@gmail.com>
Mon, 27 Mar 2017 10:37:11 +0000 (13:37 +0300)
committerMichal Srb <michalsrb@gmail.com>
Mon, 27 Mar 2017 10:37:11 +0000 (13:37 +0300)
commitbf3bdac082978ca32895a4b6a123016094905689
tree7aee1bdc59384cd49acc341b1772ec2afa821d46
parent53f520567202928f908b5f94f6d143e7067a8bdd
Fix crash from integer overflow in SMsgReader::readClientCutText

The length sent by client is U32, but is converted into int. If it was bigger than 0x7fffffff the resulting int is negative, it passes the check against maxCutText and later throws std::bad_alloc from CharArray which takes down the whole server.

All the Streaming API deals with lengths in ints, so we can't tell it to skip that big amount of data. And it is not realistic to expect more than 2GB of clipboard data anyway. So lets just throw rdr::Exception that will disconnect this client and keep the server alive.
common/rfb/SMsgReader.cxx