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