The XRecord library is in libXtst. In its async handler (record_async_handler), there's no checking of the X reply type other than to check whether it's an error or not. If it gets a non error reply, then it assumes it's a record reply without actually checking. This will cause undefined execution once we get to parse_reply_call_callback.
The next step would be to add a check in record_async_handler to determine if the reply is really an xrecord reply. If not, just toss it and move on. I'll make a test package for this in a bit, but it's end of day for me so someone may beat me to the punch :).
Emmanuel,
The XRecord library is in libXtst. In its async handler (record_ async_handler) , there's no checking of the X reply type other than to check whether it's an error or not. If it gets a non error reply, then it assumes it's a record reply without actually checking. This will cause undefined execution once we get to parse_reply_ call_callback.
The next step would be to add a check in record_ async_handler to determine if the reply is really an xrecord reply. If not, just toss it and move on. I'll make a test package for this in a bit, but it's end of day for me so someone may beat me to the punch :).