Searched hist:"23 bfe28fffd6fff12a39c1ff7274b0dfdecbfa38" (Results 1 – 2 of 2) sorted by relevance
/openbmc/qemu/ui/ |
H A D | vnc.h | diff 23bfe28fffd6fff12a39c1ff7274b0dfdecbfa38 Thu Mar 03 14:37:55 CST 2011 Stefan Weil <weil@mail.berlios.de> vnc: Fix stack corruption and other bitmap related bugs
Commit bc2429b9174ac2d3c56b7fd35884b0d89ec7fb02 introduced a severe bug (stack corruption).
bitmap_clear was called with a wrong argument which caused out-of-bound writes to the local variable width_mask.
This bug was detected with QEMU running on windows. It also occurs with wine:
*** stack smashing detected ***: terminated wine: Unhandled illegal instruction at address 0x6115c7 (thread 0009), starting debugger...
The bug is not windows specific!
Instead of fixing the wrong parameter value, bitmap_clear(), bitmap_set and width_mask were removed, and bitmap_intersect() was replaced by !bitmap_empty(). The new operation is much shorter and equivalent to the old operations.
The declarations of the dirty bitmaps in vnc.h were also wrong for 64 bit hosts because of a rounding effect: for these hosts, VNC_MAX_WIDTH is no longer a multiple of (16 * BITS_PER_LONG), so the rounded value of VNC_DIRTY_WORDS was too small.
Fix both declarations by using the macro which is designed for this purpose.
Cc: Corentin Chary <corentincj@iksaif.net> Cc: Wen Congyang <wency@cn.fujitsu.com> Cc: Gerhard Wiesinger <lists@wiesinger.com> Cc: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Stefan Weil <weil@mail.berlios.de> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|
H A D | vnc.c | diff 23bfe28fffd6fff12a39c1ff7274b0dfdecbfa38 Thu Mar 03 14:37:55 CST 2011 Stefan Weil <weil@mail.berlios.de> vnc: Fix stack corruption and other bitmap related bugs
Commit bc2429b9174ac2d3c56b7fd35884b0d89ec7fb02 introduced a severe bug (stack corruption).
bitmap_clear was called with a wrong argument which caused out-of-bound writes to the local variable width_mask.
This bug was detected with QEMU running on windows. It also occurs with wine:
*** stack smashing detected ***: terminated wine: Unhandled illegal instruction at address 0x6115c7 (thread 0009), starting debugger...
The bug is not windows specific!
Instead of fixing the wrong parameter value, bitmap_clear(), bitmap_set and width_mask were removed, and bitmap_intersect() was replaced by !bitmap_empty(). The new operation is much shorter and equivalent to the old operations.
The declarations of the dirty bitmaps in vnc.h were also wrong for 64 bit hosts because of a rounding effect: for these hosts, VNC_MAX_WIDTH is no longer a multiple of (16 * BITS_PER_LONG), so the rounded value of VNC_DIRTY_WORDS was too small.
Fix both declarations by using the macro which is designed for this purpose.
Cc: Corentin Chary <corentincj@iksaif.net> Cc: Wen Congyang <wency@cn.fujitsu.com> Cc: Gerhard Wiesinger <lists@wiesinger.com> Cc: Anthony Liguori <aliguori@us.ibm.com> Signed-off-by: Stefan Weil <weil@mail.berlios.de> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
|