Xevie: always initialize rep.length (bug#17394)

The XEvIE extension doesn't clear the rep.length field for any reply but
the version check. Hence, if there is junk data in it and that is sent
to the client, it hangs.

X.Org bug#17394 (http://bugs.freedesktop.org/show_bug.cgi?id=17394)
(cherry picked from commit d3ae193f4a)
This commit is contained in:
Thorvald Natvig 2008-09-01 19:36:56 +02:00 committed by Adam Jackson
parent 67ed1f23fe
commit bcea1095da

View file

@ -202,6 +202,7 @@ int ProcXevieStart (register ClientPtr client)
xevieModifiersOn = FALSE;
rep.length = 0;
rep.type = X_Reply;
rep.sequence_number = client->sequence;
WriteToClient (client, sizeof (xXevieStartReply), (char *)&rep);
@ -223,6 +224,7 @@ int ProcXevieEnd (register ClientPtr client)
XevieEnd(xevieClientIndex);
}
rep.length = 0;
rep.type = X_Reply;
rep.sequence_number = client->sequence;
WriteToClient (client, sizeof (xXevieEndReply), (char *)&rep);
@ -243,6 +245,7 @@ int ProcXevieSend (register ClientPtr client)
return BadAccess;
xE = (xEvent *)&stuff->event;
rep.length = 0;
rep.type = X_Reply;
rep.sequence_number = client->sequence;
WriteToClient (client, sizeof (xXevieSendReply), (char *)&rep);
@ -289,6 +292,7 @@ int ProcXevieSelectInput (register ClientPtr client)
return BadAccess;
xevieMask = stuff->event_mask;
rep.length = 0;
rep.type = X_Reply;
rep.sequence_number = client->sequence;
WriteToClient (client, sizeof (xXevieSelectInputReply), (char *)&rep);