Mercurial > vanilla
annotate system/accountsservice/musl-fgetspent_r.patch @ 626:657ee4987f4d
vanilla: re-add licenses to services
author | David Demelier <markand@malikania.fr> |
---|---|
date | Tue, 23 Jul 2019 22:30:00 +0200 |
parents | 9987c7d6e9cf |
children |
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 |