> I managed to find where this is happening. It is not in glibc but in
> systemd.
>
> If your /etc/nsswitch.conf has something like this:
>
> passwd: compat mymachines systemd
>
> then the routines that are being used are systemd ones.
>
> The checks being done are here in the function valid_user_group_name:
>
> https://github.com/systemd/systemd/blob/master/src/basic/user-util.c
>
> and in the case that those checks fail then _nss_systemd_getpwnam_r from
> systemd libraries returns EINVAL
>
> https://github.com/systemd/systemd/blob/master/src/nss-systemd/nss-systemd.c
>
> if (!valid_user_group_name(name)) {
> r = -EINVAL;
> goto fail;
> }
>
> ...
>
> fail:
> *errnop = -r;
> return NSS_STATUS_UNAVAIL;
>
> So the problem is that systemd version of getpwnam_r is deviating from
> the standard of returning 0 for not found users.
>
> Either the systemd library module or the nsswitch.conf is probably what
> changed during your upgrade.
>
> John
hi john,
both packages (filesystem containing nsswitch.conf and systemd) received
an upgrade last week:
upgraded systemd (231-4 -> 232-6)
diff of old vs new nsswitch.conf:
$ diff {,/}etc/nsswitch.conf
3,5c3,5
< passwd: files
< group: files
< shadow: files
---
> passwd: compat mymachines systemd
> group: compat mymachines systemd
> shadow: compat
9c9
< hosts: files dns myhostname
---
> hosts: files mymachines resolve [!UNAVAIL=return] dns myhostname
so i might take this to the arch ML and also to the systemd bug tracker.
thank you for your thorough investigation of this isssue!
georg