]> source.dussan.org Git - tigervnc.git/commit
Limit size of cursor accepted by client. 444/head
authorMichal Srb <michalsrb@gmail.com>
Thu, 6 Apr 2017 20:52:22 +0000 (23:52 +0300)
committerMichal Srb <michalsrb@gmail.com>
Thu, 6 Apr 2017 20:52:22 +0000 (23:52 +0300)
commitc26b4b3bd20b40ca5f1ae9477164473fbd94995d
treedba2f546ea3c02cbf1928fc77cd0a0547a1ce6f2
parent83722048ddbe3eafe41bdccca4d706e98b25103b
Limit size of cursor accepted by client.

Width and height of a cursor are received as U16 from network. Accepting full range of U16 values can cause integer overflows in multiple places.

The worst is probably VLA in CMsgReader::readSetXCursor:
  rdr::U8 buf[width*height*4];

The width*height*4 can be too big to fit on stack or it can overflow into negative numbers. Both cases are undefined behaviour. Following writes to buf can overwrite other data on stack.
common/rfb/CMsgReader.cxx
common/rfb/CMsgReader.h