test: fix request length calculation, add length tests for XISelectEvents
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
		
							parent
							
								
									7ab1b50c54
								
							
						
					
					
						commit
						6fe235d363
					
				| 
						 | 
					@ -95,7 +95,14 @@ static void request_XISelectEvent(xXISelectEventsReq *req, int error)
 | 
				
			||||||
    ClientRec client;
 | 
					    ClientRec client;
 | 
				
			||||||
    xXIEventMask *mask, *next;
 | 
					    xXIEventMask *mask, *next;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    req->length = (sz_xXISelectEventsReq/4) + req->num_masks;
 | 
					    req->length = (sz_xXISelectEventsReq/4);
 | 
				
			||||||
 | 
					    mask = (xXIEventMask*)&req[1];
 | 
				
			||||||
 | 
					    for (i = 0; i < req->num_masks; i++)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        req->length += sizeof(xXIEventMask)/4 + mask->mask_len;
 | 
				
			||||||
 | 
					        mask = (xXIEventMask*)((char*)&mask[1] + mask->mask_len * 4);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    client = init_client(req->length, req);
 | 
					    client = init_client(req->length, req);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rc = ProcXISelectEvents(&client);
 | 
					    rc = ProcXISelectEvents(&client);
 | 
				
			||||||
| 
						 | 
					@ -280,16 +287,24 @@ static void test_XISelectEvents(void)
 | 
				
			||||||
    req->num_masks = 0xFFFF;
 | 
					    req->num_masks = 0xFFFF;
 | 
				
			||||||
    request_XISelectEvent(req, BadLength);
 | 
					    request_XISelectEvent(req, BadLength);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* testing various device ids */
 | 
					 | 
				
			||||||
    req->win = ROOT_WINDOW_ID;
 | 
					    req->win = ROOT_WINDOW_ID;
 | 
				
			||||||
    req->num_masks = 1;
 | 
					    req->num_masks = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    g_test_message("Triggering bogus mask length error");
 | 
				
			||||||
 | 
					    mask = (xXIEventMask*)&req[1];
 | 
				
			||||||
 | 
					    mask->deviceid = 0;
 | 
				
			||||||
 | 
					    mask->mask_len = 0xFFFF;
 | 
				
			||||||
 | 
					    request_XISelectEvent(req, BadLength);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* testing various device ids */
 | 
				
			||||||
    g_test_message("Testing existing device ids.");
 | 
					    g_test_message("Testing existing device ids.");
 | 
				
			||||||
    for (i = 0; i < 6; i++)
 | 
					    for (i = 0; i < 6; i++)
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        mask = (xXIEventMask*)&req[1];
 | 
					        mask = (xXIEventMask*)&req[1];
 | 
				
			||||||
        mask->deviceid = i;
 | 
					        mask->deviceid = i;
 | 
				
			||||||
        mask->mask_len = 1;
 | 
					        mask->mask_len = 1;
 | 
				
			||||||
 | 
					        req->win = ROOT_WINDOW_ID;
 | 
				
			||||||
 | 
					        req->num_masks = 1;
 | 
				
			||||||
        request_XISelectEvent(req, Success);
 | 
					        request_XISelectEvent(req, Success);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue