diff options
author | Yonit Halperin <yhalperi@redhat.com> | 2012-05-17 20:37:20 +0300 |
---|---|---|
committer | Yonit Halperin <yhalperi@redhat.com> | 2012-05-21 08:58:38 +0300 |
commit | 720d316153d1160ba6114950b0e7f55c86b0ac1c (patch) | |
tree | 843dc39750ab51af71c4bfeb1b9c5c7ad34fdf78 | |
parent | dd0d4959bb14c377c99c092de24ec3a26de8ec7d (diff) | |
download | spice-720d316153d1160ba6114950b0e7f55c86b0ac1c.tar.gz spice-720d316153d1160ba6114950b0e7f55c86b0ac1c.tar.xz spice-720d316153d1160ba6114950b0e7f55c86b0ac1c.zip |
server/video: do not allow non-streamable drawables be stream candidates
Resolves: rhbz#820669
Fix a segfault caused by a call to __red_is_next_stream_frame made by
red_stream_maintenance, with a drawable that is not a DRAW_COPY one.
The segfault is a reault of __red_is_next_stream_frame accessing
red_drawable->u.copy.src_bitmap for a non DRAW_COPY drawable.
-rw-r--r-- | server/red_worker.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/server/red_worker.c b/server/red_worker.c index dd00bffa..3a0bdf4e 100644 --- a/server/red_worker.c +++ b/server/red_worker.c @@ -2916,6 +2916,10 @@ static inline int __red_is_next_stream_frame(RedWorker *worker, RedDrawable *red_drawable; int is_frame_container = FALSE; + if (!candidate->streamable) { + return STREAM_FRAME_NONE; + } + if (candidate->creation_time - other_time > (stream ? RED_STREAM_CONTINUS_MAX_DELTA : RED_STREAM_DETACTION_MAX_DELTA)) { return STREAM_FRAME_NONE; |