XChangeFeedbackControl will SEGV if the last parameter is NULL.

Signed-off-by: Peter Harris <phar...@opentext.com>
---
 xts5/XI/ChangeFeedbackControl.m |   21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/xts5/XI/ChangeFeedbackControl.m b/xts5/XI/ChangeFeedbackControl.m
index e240e67..8b6ec3c 100644
--- a/xts5/XI/ChangeFeedbackControl.m
+++ b/xts5/XI/ChangeFeedbackControl.m
@@ -572,6 +572,16 @@ Do a ChangeFeedbackControl, specifying a device that has 
no feedbacks.
 
 if (Setup_Extension_DeviceInfo(NFeedMask))
     {
+    XBellFeedbackControl belf;
+    belf.class = BellFeedbackClass;
+    belf.length = sizeof (XBellFeedbackControl);
+    belf.pitch = 0;
+    belf.id = 0;
+    belf.percent = -2;
+    belf.pitch = 0;
+    belf.duration = 100;
+    f = (XFeedbackControl *) &belf;
+
     device = Devs.NoFeedback;
     XCALL;
     if (geterr() == BadMatch)
@@ -592,6 +602,7 @@ Do a ChangeFeedbackControl, specifying an invalid device.
 XDevice bogus;
 int baddevice;
 int ximajor, first, err;
+XBellFeedbackControl belf;
 
     if (!XQueryExtension (display, INAME, &ximajor, &first, &err)) {
            untested("%s: Input extension not supported.\n", TestName);
@@ -601,6 +612,16 @@ int ximajor, first, err;
     BadDevice (display, baddevice);
     bogus.device_id = -1;
     device = &bogus;
+
+    belf.class = BellFeedbackClass;
+    belf.length = sizeof (XBellFeedbackControl);
+    belf.pitch = 0;
+    belf.id = 0;
+    belf.percent = -2;
+    belf.pitch = 0;
+    belf.duration = 100;
+    f = (XFeedbackControl *) &belf;
+
     XCALL;
     if (geterr() == baddevice)
        CHECK;
-- 
1.7.10.4

_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to