From 061278dc23fcffcd0ebe74099babff6c85011b0f 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: 4c92eb00f ("randr: add output source setup") Reported-By: dasha_uwu Signed-off-by: Enrico Weigelt, metux IT consult Part-of: (cherry picked from commit 73f3c476080b6e46d3c30bc9e1a2e7e1a82507fb) --- randr/rrprovider.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/randr/rrprovider.c b/randr/rrprovider.c index 46469d548..83de25d9d 100644 --- a/randr/rrprovider.c +++ b/randr/rrprovider.c @@ -221,10 +221,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) { @@ -246,7 +247,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);