[DSE-Dev] Bug#1063329: libselinux1t64: breaks system in upgrade from unstable

Michael Tokarev mjt at tls.msk.ru
Thu Feb 8 05:32:10 GMT 2024


06.02.2024 12:34, Helmut Grohne:
...
> An option I see here is to provide ABI-duality for libselinux:
> 
> -extern int matchpathcon_filespec_add(ino_t ino, int specind, const char *file);
> +typedef unsigned long libselinux_ino_t;
> +typedef uint64_t libselinux_ino64_t;
> +extern int matchpathcon_filespec_add(libselinux_ino_t ino, int specind, const char *file);
> +#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64 && sizeof(unsigned long) < 8

It's good for a sketch to show an idea but it wont work in practice, -
you can't use sizeof(foo) in a preprocessor condition.  That's what
WORDSIZE #defines are for.  But it's a minor nit.

glibc already has all the support for LFS which can be used directly,
by copying code from any glibc header, like eg for lseek definition...

> +extern int matchpathcon_filespec_add64(libselinux_ino64_t ino, int specind, const char *file);
> +#define matchpathcon_filespec_add matchpathcon_filespec_add64
and keeping this #define here instead of using internal in-glibc
symbol redirection stuff.

And ofc we need to define the compat wrapper for matchpathcon_filespec_add
to the source, and the new 64bit symbol to libselinux.map, with the same
arch-specific condition.

/mjt



More information about the SELinux-devel mailing list