|
|
Subscribe / Log in / New account

Hutterer: X servers no longer allow byte-swapped clients

Hutterer: X servers no longer allow byte-swapped clients

Posted Jan 8, 2023 10:12 UTC (Sun) by whot (subscriber, #50317)
In reply to: Hutterer: X servers no longer allow byte-swapped clients by NYKevin
Parent article: Hutterer: X servers no longer allow byte-swapped clients

> Why not just do all the endianness swapping in the BE host?

Parts of the X protocol are written so that you don't know what to swap until you've parsed everything else before. e.g. requests with lists of items where each item is of different length (including, iirc, sometimes the length defined by some type field). So basically - you need a full X server to parse enough of the protocol to byte-swap everything. And that's a fair bit of effort that realistically no-one is going to step up to do. libxcb would probably help with that a lot, but that's been on the wishlist for at least 15 years now.


to post comments

Hutterer: X servers no longer allow byte-swapped clients

Posted Jan 9, 2023 21:14 UTC (Mon) by NYKevin (subscriber, #129325) [Link] (1 responses)

Well, I suppose it depends. When application developers compile code for a big endian architecture, will they prefer to just byte-swap their own X11 messages and pretend to be a LE client, or will they prefer to tell the user to futz with the X server configuration?

Hutterer: X servers no longer allow byte-swapped clients

Posted Jan 10, 2023 9:18 UTC (Tue) by geert (subscriber, #98403) [Link]

Pretending to be an LE client won't help, as that may break connecting to a BE server[1].
So this really divides the world in two distinct universes.
And if distros mitigate this interoperability problem by enabling the support by default, the attack vector stays the same.

The proper way to handle this would be to fix the endianness in the protocol, and have a grace period, like we did for ext2fs (little endian) and XFS (big endian) decades ago. Unfortunately it's a bit late for that, and a short grace period won't work, as there may be clients that cannot be updated easily. Network protocol compatibility is different from file system compatibility, where you can just convert the file system once, and be done with it (there were never many big-endian ext2 file systems in the first place, as the problem was identified and solved early).

[1] None of my BE hardware is supported by contemporary X servers, as Xorg dropped the support for that "exotic" hardware a while ago. So in reality, I only care about using BE clients connecting to an LE server on modern hardware, which is fast enough to make the byte-swapping overhead unnoticeable.


Copyright © 2025, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds