Go to file
Frediano Ziglio a69fb1ec34 Fix integer overflows computing sizes
Make code safe using both 32 and 64 bit machine.
Consider that this code can be compiled for machines with 32 bit.
There are some arrays length which are 32 bit.

If size_t this can cause easily an overflow. For instance message_len
sending SPICE_MSG_NOTIFY messages are 32 bit and code add a small
constant (currently 24) before doing the test for size. Now passing
(uint32_t) -20 as message_len would lead to a size of 4 after the
addition. This overflow does not happen on 64 bit machine as the length
is converted to size_t.

There are also some array length where some item are bigger than 1 byte.
For instance SPICE_MAIN_CHANNELS_LIST message have a number of channels
and each channel is composed by 2 bytes. Now the code generated try to do
length * 2 where length is still a 32 bit so if we put a value like
0x80000002u we get 4 as length. This will cause an overflow as code will
allocate very few bytes but try to fill with a huge number of elements.
This overflow happen in both 32 and 64 bit machine.

To avoid all these possible overflows this patch use only 64 bit for
nelements (number of elements), nw_size (network size) and mem_size
(memory size needed) checking the sizes to avoid other overflows
(like pointers conversions under 32 bit machines).

Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
Acked-by: Christophe de Dinechin <dinechin@redhat.com>
2018-05-11 08:41:36 +01:00
build-aux build-sys: make it a seperately buildable spice-common library 2012-03-22 20:21:05 +01:00
common lz: Move ENCODE_PIXEL for RGB24 and RGB32 to a common place 2018-05-10 19:50:50 +01:00
docs build-sys: don't dist spice-protocol.html 2017-03-28 14:57:50 +02:00
m4 Add --enable-extra-checks option 2018-03-19 14:47:21 +00:00
python_modules Fix integer overflows computing sizes 2018-05-11 08:41:36 +01:00
tests test-marshallers: Test demarshalling 2017-09-25 16:13:27 +01:00
.gitmodules Remove spice-protocol submodule 2015-08-11 10:26:06 +02:00
autogen.sh Remove files moved to spice-protocol 2015-08-11 10:26:06 +02:00
configure.ac Add --enable-extra-checks option 2018-03-19 14:47:21 +00:00
COPYING Remove trailing whitespace 2015-12-18 11:41:15 +01:00
git.mk Update git.mk to latest version 2012-09-21 10:51:17 +02:00
Makefile.am Start adding protocol file documentation 2016-10-17 11:43:26 +01:00
spice1.proto Revert "Remove files moved to spice-protocol" 2016-03-10 16:01:36 +01:00
spice_codegen.py codegen: Fix license name 2017-05-18 16:40:36 +01:00
spice.proto protocol: Use a typedef to specify stream_id type 2018-05-10 19:49:03 +01:00