[PATCH v2 1/7] xkb: Check for unsuported comibnation of action for XkbSetMap

Pauli Nieminen ext-pauli.nieminen at nokia.com
Wed Jul 28 12:47:01 PDT 2010


This prevents validation code from using unitialized values. Validation
code depends on the previous step to produce lookup table for the next step.

Fixes:
Using uninitialized element of array "symsPerKey" in call to function
"CheckKeyActions"
Using uninitialized element of array "mapWidths" in call to function
"CheckKeySyms"

Signed-off-by: Pauli Nieminen <ext-pauli.nieminen at nokia.com>
---

Improved commit message

 xkb/xkb.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/xkb/xkb.c b/xkb/xkb.c
index 4105c1c..618d0bc 100644
--- a/xkb/xkb.c
+++ b/xkb/xkb.c
@@ -2367,6 +2367,14 @@ _XkbSetMapChecks(ClientPtr client, DeviceIntPtr dev, xkbSetMapReq *req, char* va
 	}
     }
 
+    if ((!(req->present & XkbKeySymsMask) &&
+	    (req->present & XkbKeyActionsMask)) ||
+	(!(req->present & XkbKeyTypesMask) &&
+	    (req->present & XkbKeySymsMask))) {
+	client->errorValue = req->present;
+	return BadMatch;
+    }
+
     if ((req->present & XkbKeyTypesMask) &&
 	(!CheckKeyTypes(client,xkb,req,(xkbKeyTypeWireDesc **)&values,
 						&nTypes,mapWidths))) {
-- 
1.6.3.3



More information about the xorg-devel mailing list