[Spice-commits] server/gstreamer-encoder.c
Frediano Ziglio
fziglio at kemper.freedesktop.org
Mon Dec 12 19:39:27 UTC 2016
server/gstreamer-encoder.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit 554b20bbdb9062ec187a6e25235cf47d4b2bd66a
Author: Frediano Ziglio <fziglio at redhat.com>
Date: Mon Dec 12 11:13:19 2016 +0000
gstreamer: Prevent integer overflow in delay computation
The partial expression "MSEC_PER_SEC * size * 8" can overflow if
size is 536870 or more. This as the operation is done using
32 bit unsigned integers. Being the size potentially double of
a compressed frame size the limit can be easily reached.
As get_average_frame_size already return a 64 bit use 64 bit
even for the size to avoid the integer overflow.
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
Acked-by: Francois Gouget <fgouget at codeweavers.com>
diff --git a/server/gstreamer-encoder.c b/server/gstreamer-encoder.c
index e28ab00..988d193 100644
--- a/server/gstreamer-encoder.c
+++ b/server/gstreamer-encoder.c
@@ -511,7 +511,7 @@ static uint32_t get_min_playback_delay(SpiceGstEncoder *encoder)
* an I frame) and an average frame. This also takes into account the
* frames dropped by the encoder bit rate control.
*/
- uint32_t size = get_maximum_frame_size(encoder) + get_average_frame_size(encoder);
+ uint64_t size = get_maximum_frame_size(encoder) + get_average_frame_size(encoder);
uint32_t send_time = MSEC_PER_SEC * size * 8 / encoder->bit_rate;
/* Also factor in the network latency with a margin for jitter. */
More information about the Spice-commits
mailing list