Make MISC extention's PassMessage() actually work and fix memory leaks

This commit is contained in:
Thomas Winischhofer 2004-12-15 00:32:56 +00:00
parent d0b17bda4d
commit c7fec26b50

View File

@ -582,14 +582,22 @@ ProcXF86MiscPassMessage(client)
strncpy(msgtype,(char*)(&stuff[1]),stuff->typelen);
} else return BadValue;
if (stuff->vallen) {
if (!(msgval = xalloc(stuff->vallen)))
if (!(msgval = xalloc(stuff->vallen))) {
xfree(msgtype);
return BadAlloc;
strncpy(msgval,(char*)(&stuff[1] + ((stuff->typelen + 3) & ~3)),
}
strncpy(msgval,(char*)((char*)&stuff[1] + ((stuff->typelen + 3) & ~3)),
stuff->vallen);
} else return BadValue;
} else {
xfree(msgtype);
return BadValue;
}
if ((retval= MiscExtPassMessage(stuff->screen,msgtype,msgval,&retstr)) != 0)
if ((retval = MiscExtPassMessage(stuff->screen,msgtype,msgval,&retstr)) != 0) {
xfree(msgtype);
xfree(msgval);
return retval;
}
rep.type = X_Reply;
rep.sequenceNumber = client->sequence;
@ -607,6 +615,9 @@ ProcXF86MiscPassMessage(client)
if (rep.mesglen)
WriteToClient(client, rep.mesglen, (char *)retstr);
xfree(msgtype);
xfree(msgval);
return (client->noClientException);
}