annotate system/accountsservice/musl-fgetspent_r.patch @ 1341:9f35c15329d1 default tip @

dev/meson: downgrade to 0.59.4 due to many regression
author David Demelier <markand@malikania.fr>
date Wed, 22 Dec 2021 21:52:57 +0100
parents 9987c7d6e9cf
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
493
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 diff --git a/src/daemon.c b/src/daemon.c
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 index 312394a..e7b3c58 100644
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 --- src/daemon.c
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 +++ src/daemon.c
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 @@ -140,6 +140,28 @@ error_get_type (void)
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 #define MAX_LOCAL_USERS 50
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 #endif
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
8
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 +#ifndef __GLIBC__
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 + /* Musl libc does not support fgetspent_r(), write own
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 + * wrapper
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 + */
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 +static int fgetspent_r(FILE *fp, struct spwd *spbuf, char *buf, size_t buflen, struct spwd **spbufp) {
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 + struct spwd *shadow_entry = fgetspent(fp);
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 + if(!shadow_entry)
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 + return -1;
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 + size_t namplen = strlen(shadow_entry->sp_namp);
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
18 + size_t pwdplen = strlen(shadow_entry->sp_pwdp);
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 +
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 + if(namplen + pwdplen + 2 > buflen)
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 + return -1;
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 +
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 + *spbufp = memcpy(spbuf, shadow_entry, sizeof(struct spwd));
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 + spbuf->sp_namp = strncpy(buf, shadow_entry->sp_namp, namplen + 1);
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
25 + spbuf->sp_pwdp = strncpy(buf + namplen + 1, shadow_entry->sp_pwdp, pwdplen + 1);
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 +
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 + return 0;
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 +}
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 +#endif
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
30 +
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 static struct passwd *
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 entry_generator_fgetpwent (Daemon *daemon,
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 GHashTable *users,
9987c7d6e9cf system/accountsservice: initial import, closes #1581
David Demelier <markand@malikania.fr>
parents:
diff changeset
34