Mercurial > vanilla
view system/accountsservice/musl-fgetspent_r.patch @ 669:97da3728a2f8
core/bash-completion: fix CMake config directory
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 31 Jul 2019 21:05:00 +0200 |
parents | 9987c7d6e9cf |
children |
line wrap: on
line source
diff --git a/src/daemon.c b/src/daemon.c index 312394a..e7b3c58 100644 --- src/daemon.c +++ src/daemon.c @@ -140,6 +140,28 @@ error_get_type (void) #define MAX_LOCAL_USERS 50 #endif +#ifndef __GLIBC__ + /* Musl libc does not support fgetspent_r(), write own + * wrapper + */ +static int fgetspent_r(FILE *fp, struct spwd *spbuf, char *buf, size_t buflen, struct spwd **spbufp) { + struct spwd *shadow_entry = fgetspent(fp); + if(!shadow_entry) + return -1; + size_t namplen = strlen(shadow_entry->sp_namp); + size_t pwdplen = strlen(shadow_entry->sp_pwdp); + + if(namplen + pwdplen + 2 > buflen) + return -1; + + *spbufp = memcpy(spbuf, shadow_entry, sizeof(struct spwd)); + spbuf->sp_namp = strncpy(buf, shadow_entry->sp_namp, namplen + 1); + spbuf->sp_pwdp = strncpy(buf + namplen + 1, shadow_entry->sp_pwdp, pwdplen + 1); + + return 0; +} +#endif + static struct passwd * entry_generator_fgetpwent (Daemon *daemon, GHashTable *users,