[Pkg-shadow-devel] Bug#1019917: /usr/bin/getsubids: Segfaults when nsswitch.conf refers to a libsubid_*.so library that does not exist

Sam Morris sam at robots.org.uk
Fri Sep 16 09:52:56 BST 2022

Package: uidmap
Version: 1:4.11.1+dfsg1-2
Severity: normal
File: /usr/bin/getsubids

Hash: SHA256


    $ grep ^subid: /etc/nsswitch.conf
    subid: sss

I get:

    $ getsubids sam
    Segmentation fault (core dumped)

GDB reveals that this is happening while handling the failure to open

    (gdb) where
    #0  __vfprintf_internal (s=0x0, format=0x7ffff7f94872 "Error opening %s: %s\n", ap=ap at entry=0x7fffffffdbd0, mode_flags=mode_flags at entry=2) at ./stdio-common/vfprintf-internal.c:1359
    #1  0x00007ffff7d1751f in ___fprintf_chk (fp=<optimized out>, flag=flag at entry=1, format=format at entry=0x7ffff7f94872 "Error opening %s: %s\n") at ./debug/fprintf_chk.c:33
    #2  0x00007ffff7f8318e in fprintf (__fmt=0x7ffff7f94872 "Error opening %s: %s\n", __stream=<optimized out>) at /usr/include/x86_64-linux-gnu/bits/stdio2.h:105
    #3  nss_init (nsswitch_path=0x7ffff7f94820 "/etc/nsswitch.conf", nsswitch_path at entry=0x0) at ./lib/nss.c:94
    #4  0x00007ffff7f831bb in get_subid_nss_handle () at ./lib/nss.c:148
    #5  0x00007ffff7f852db in list_owner_ranges (owner=owner at entry=0x7fffffffe2a6 "sam", id_type=id_type at entry=ID_TYPE_UID, in_ranges=in_ranges at entry=0x7fffffffddd0) at ./lib/subordinateio.c:776
    #6  0x00007ffff7f7efad in get_subid_ranges (ranges=0x7fffffffddd0, id_type=ID_TYPE_UID, owner=owner at entry=0x7fffffffe2a6 "sam") at ./libsubid/api.c:48
    #7  0x000055555555514f in main (argc=2, argv=0x7fffffffdf18) at ./src/getsubids.c:38

    (gdb) l
    89					goto done;
    90				}
    91				snprintf(libname, 64,  "libsubid_%s.so", token);
    92				h = dlopen(libname, RTLD_LAZY);
    93				if (!h) {
    94					fprintf(shadow_logfd, "Error opening %s: %s\n", libname, dlerror());
    95					fprintf(shadow_logfd, "Using files\n");
    96					subid_nss = NULL;
    97					goto done;
    98				}

    (gdb) p libname
    $1 = "libsubid_sss.so", '\000' <repeats 49 times>

    (gdb) p shadow_logfd
    $2 = (FILE *) 0x7ffff7df3680 <_IO_2_1_stderr_>

    (gdb) p dlerror()
    $3 = 0x0

Looks like dlerror is returning NULL which causes the crash.

- -- System Information:
Debian Release: bookworm/sid
  APT prefers testing
  APT policy: (530, 'testing'), (520, 'unstable'), (1, 'experimental')
merged-usr: no
Architecture: amd64 (x86_64)

Kernel: Linux 5.19.0-1-amd64 (SMP w/2 CPU threads; PREEMPT)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages uidmap depends on:
ii  libaudit1    1:3.0.7-1+b1
ii  libc6        2.34-7
ii  libselinux1  3.4-1+b1
ii  libsubid4    1:4.11.1+dfsg1-2

uidmap recommends no packages.

uidmap suggests no packages.

- -- no debconf information



More information about the Pkg-shadow-devel mailing list