From 73f3c476080b6e46d3c30bc9e1a2e7e1a82507fb Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Thu, 15 May 2025 10:32:52 +0200 Subject: [PATCH] randr: fix unconditional byte-swap in ProcRRGetProviderInfo() The list of the associated provider's capabilities was always swapped unconditionally, while it should only be in case of client having opposite endianess. Fixes: 426bc0a28edbe0e9153f692a02dd25f744ffa034 Reported-By: dasha_uwu Signed-off-by: Enrico Weigelt, metux IT consult Part-of: --- randr/rrprovider.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/randr/rrprovider.c b/randr/rrprovider.c index a142ff617..61e9001b4 100644 --- a/randr/rrprovider.c +++ b/randr/rrprovider.c @@ -220,10 +220,11 @@ ProcRRGetProviderInfo (ClientPtr client) } if (provider->output_source) { providers[i] = provider->output_source->id; - if (client->swapped) - swapl(&providers[i]); prov_cap[i] = RR_Capability_SourceOutput; + if (client->swapped) { + swapl(&providers[i]); swapl(&prov_cap[i]); + } i++; } xorg_list_for_each_entry(provscreen, &pScreen->secondary_list, secondary_head) { @@ -245,7 +246,7 @@ ProcRRGetProviderInfo (ClientPtr client) memcpy(name, provider->name, rep.nameLength); if (client->swapped) { - swaps(&rep.sequenceNumber); + swaps(&rep.sequenceNumber); swapl(&rep.length); swapl(&rep.capabilities); swaps(&rep.nCrtcs);