[libfreerdp] fix endianness issues
There were some fields sent without considering endianness, making the clients fail when parsing those fields. Use Data_Write_XXX functions so the endiannes won't affect the byte order and the clients will read properly the fields.
This commit is contained in:
parent
6bdd36c83d
commit
a332db7cf5
@ -694,7 +694,7 @@ static int xcrush_generate_output(XCRUSH_CONTEXT* xcrush, BYTE* OutputBuffer, UI
|
|||||||
if (&OutputBuffer[2] >= &OutputBuffer[OutputSize])
|
if (&OutputBuffer[2] >= &OutputBuffer[OutputSize])
|
||||||
return -6001; /* error */
|
return -6001; /* error */
|
||||||
|
|
||||||
*((UINT16*)OutputBuffer) = MatchCount;
|
Data_Write_UINT16(OutputBuffer, MatchCount);
|
||||||
MatchDetails = (RDP61_MATCH_DETAILS*)&OutputBuffer[2];
|
MatchDetails = (RDP61_MATCH_DETAILS*)&OutputBuffer[2];
|
||||||
Literals = (BYTE*)&MatchDetails[MatchCount];
|
Literals = (BYTE*)&MatchDetails[MatchCount];
|
||||||
|
|
||||||
@ -703,12 +703,12 @@ static int xcrush_generate_output(XCRUSH_CONTEXT* xcrush, BYTE* OutputBuffer, UI
|
|||||||
|
|
||||||
for (MatchIndex = 0; MatchIndex < MatchCount; MatchIndex++)
|
for (MatchIndex = 0; MatchIndex < MatchCount; MatchIndex++)
|
||||||
{
|
{
|
||||||
MatchDetails[MatchIndex].MatchLength =
|
Data_Write_UINT16(&MatchDetails[MatchIndex].MatchLength,
|
||||||
(UINT16)(xcrush->OptimizedMatches[MatchIndex].MatchLength);
|
xcrush->OptimizedMatches[MatchIndex].MatchLength);
|
||||||
MatchDetails[MatchIndex].MatchOutputOffset =
|
Data_Write_UINT16(&MatchDetails[MatchIndex].MatchOutputOffset,
|
||||||
(UINT16)(xcrush->OptimizedMatches[MatchIndex].MatchOffset - HistoryOffset);
|
xcrush->OptimizedMatches[MatchIndex].MatchOffset - HistoryOffset);
|
||||||
MatchDetails[MatchIndex].MatchHistoryOffset =
|
Data_Write_UINT32(&MatchDetails[MatchIndex].MatchHistoryOffset,
|
||||||
xcrush->OptimizedMatches[MatchIndex].ChunkOffset;
|
xcrush->OptimizedMatches[MatchIndex].ChunkOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
CurrentOffset = HistoryOffset;
|
CurrentOffset = HistoryOffset;
|
||||||
|
@ -574,7 +574,7 @@ BOOL WTSVirtualChannelManagerOpen(HANDLE hServer)
|
|||||||
{
|
{
|
||||||
ULONG written;
|
ULONG written;
|
||||||
vcm->drdynvc_channel = channel;
|
vcm->drdynvc_channel = channel;
|
||||||
dynvc_caps = 0x00010050; /* DYNVC_CAPS_VERSION1 (4 bytes) */
|
Data_Write_UINT32(&dynvc_caps, 0x00010050); /* DYNVC_CAPS_VERSION1 (4 bytes) */
|
||||||
|
|
||||||
if (!WTSVirtualChannelWrite(channel, (PCHAR)&dynvc_caps, sizeof(dynvc_caps), &written))
|
if (!WTSVirtualChannelWrite(channel, (PCHAR)&dynvc_caps, sizeof(dynvc_caps), &written))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
Loading…
Reference in New Issue
Block a user