[Xcb] [PATCH proto 7/9] xselinux: add explicit padding for struc "ListItem"

Christian Linhart chris at demorecorder.com
Sun Sep 13 06:45:15 PDT 2015

This is needed so that subsequent list-items in a list are aligned
to 4 bytes which is necessary because ListItem contains 32-bit values
of types ATOM and CARD32. (Actually, only the final align-pad
is needed for that.)

The xserver makes sure that the length of both char-lists is a multiple of 4:

So, instead of a explicit padding we could add something like an assertion
or precondition that the fields "object_context_len" and "data_context_len"
have to be a multiple of 4.

Unfortunately I couldn't find a protocol specification of the xselinux
extension, to see whether the multiple of 4 is mandated by the protocol spec
or whether there should be align-pads. (and whether there should
be an align pad between "object_context" and "data_context"

Does anybody know where the spec for the xselinux protocol is?
There ought to be a spec somewhere for this because this is
security relevant.

Signed-off-by: Christian Linhart <chris at demorecorder.com>
 src/xselinux.xml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/xselinux.xml b/src/xselinux.xml
index 7751470..a97a146 100644
--- a/src/xselinux.xml
+++ b/src/xselinux.xml
@@ -107,17 +107,19 @@ <request name="GetWindowContext" opcode="7">
   <struct name="ListItem">
     <field type="ATOM" name="name" />
     <field type="CARD32" name="object_context_len" />
     <field type="CARD32" name="data_context_len" />
     <list type="char" name="object_context">
+    <pad align="4" />
     <list type="char" name="data_context">
+    <pad align="4" />
   <request name="SetPropertyCreateContext" opcode="8">
     <field type="CARD32" name="context_len" />
     <list type="char" name="context">

More information about the Xcb mailing list