[libvirt] [PATCH 04/25] m4: virt-selinux: remove obsolete checks

Daniel P. Berrangé berrange at redhat.com
Tue Oct 22 10:07:54 UTC 2019


On Mon, Oct 21, 2019 at 02:51:32PM +0200, Ján Tomko wrote:
> On Mon, Oct 21, 2019 at 10:00:29AM +0200, Pavel Hrdina wrote:
> > All OSes that we support have libselinux >= 2.5 except for Ubuntu 16.04
> > where the version is 2.4.
> > 
> > Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> > ---
> > m4/virt-selinux.m4              | 20 ++------------------
> > src/qemu/qemu_domain.c          |  4 ++--
> > src/security/security_selinux.c | 22 ++--------------------
> > tests/securityselinuxhelper.c   | 19 +++++--------------
> > 4 files changed, 11 insertions(+), 54 deletions(-)
> > 
> > diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
> > index a97bf65e7f..71478319a6 100644
> > --- a/src/qemu/qemu_domain.c
> > +++ b/src/qemu/qemu_domain.c
> > @@ -13262,7 +13262,7 @@ qemuDomainCreateDeviceRecursive(const char *device,
> >     }
> > 
> >     if (tcon &&
> > -        lsetfilecon_raw(devicePath, (VIR_SELINUX_CTX_CONST char *)tcon) < 0) {
> > +        lsetfilecon_raw(devicePath, (const char *)tcon) < 0) {
> 
> I'm confused - why do we use a cast here in the first place?
> 
> The original failure was that the definition of our mocked versions of the APIs did not
> match the declaration in system selinux headers:
> https://www.redhat.com/archives/libvir-list/2014-May/msg00925.html
> 
> Passing char* to a function treating it as const char* is allowed and I don't
> see any benefit of explicitly casting it.

IIUC the situation is the reverse.

SELinux used to declare the parameter 'security_context_t' which lacks
'const'. So we would have been passing a 'const char*' to a 'char *'
and thus need to explicitly discard const - in this case
VIR_SELINUX_CTX_CONST would have expanded to no-op.

That said it is redundant in this situation as we either have

   const char * -> char * -> char *

or

   const char * -> const char * -> const char *

If we had left out the VIR_SELINUX_CTX_CONST, the second would have
been

   const char * -> char * -> const char *

which is still fine - just uncessarily discarding const


Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list