Make MISC extention's PassMessage() actually work and fix memory leaks
This commit is contained in:
		
							parent
							
								
									d0b17bda4d
								
							
						
					
					
						commit
						c7fec26b50
					
				| 
						 | 
					@ -582,14 +582,22 @@ ProcXF86MiscPassMessage(client)
 | 
				
			||||||
	strncpy(msgtype,(char*)(&stuff[1]),stuff->typelen);
 | 
						strncpy(msgtype,(char*)(&stuff[1]),stuff->typelen);
 | 
				
			||||||
    } else return BadValue;
 | 
					    } else return BadValue;
 | 
				
			||||||
    if (stuff->vallen) {
 | 
					    if (stuff->vallen) {
 | 
				
			||||||
	if (!(msgval = xalloc(stuff->vallen)))
 | 
						if (!(msgval = xalloc(stuff->vallen))) {
 | 
				
			||||||
 | 
						    xfree(msgtype);
 | 
				
			||||||
	    return BadAlloc;
 | 
						    return BadAlloc;
 | 
				
			||||||
	strncpy(msgval,(char*)(&stuff[1] + ((stuff->typelen + 3) & ~3)),
 | 
						}
 | 
				
			||||||
 | 
						strncpy(msgval,(char*)((char*)&stuff[1] + ((stuff->typelen + 3) & ~3)),
 | 
				
			||||||
			stuff->vallen);
 | 
								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;
 | 
						return retval;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    rep.type = X_Reply;
 | 
					    rep.type = X_Reply;
 | 
				
			||||||
    rep.sequenceNumber = client->sequence;
 | 
					    rep.sequenceNumber = client->sequence;
 | 
				
			||||||
| 
						 | 
					@ -607,6 +615,9 @@ ProcXF86MiscPassMessage(client)
 | 
				
			||||||
    if (rep.mesglen)
 | 
					    if (rep.mesglen)
 | 
				
			||||||
        WriteToClient(client, rep.mesglen, (char *)retstr);
 | 
					        WriteToClient(client, rep.mesglen, (char *)retstr);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    xfree(msgtype);
 | 
				
			||||||
 | 
					    xfree(msgval);
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    return (client->noClientException);
 | 
					    return (client->noClientException);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue