ubusd: fix build on non-linux systems without peercred support
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
This commit is contained in:
parent
b2e629a4e9
commit
e59b445734
1 changed files with 14 additions and 1 deletions
15
ubusd_acl.c
15
ubusd_acl.c
|
@ -28,6 +28,14 @@
|
|||
|
||||
#include "ubusd.h"
|
||||
|
||||
#ifndef SO_PEERCRED
|
||||
struct ucred {
|
||||
int pid;
|
||||
int uid;
|
||||
int gid;
|
||||
};
|
||||
#endif
|
||||
|
||||
struct ubusd_acl_obj {
|
||||
struct avl_node avl;
|
||||
struct list_head list;
|
||||
|
@ -135,13 +143,18 @@ ubusd_acl_check(struct ubus_client *cl, const char *obj,
|
|||
int
|
||||
ubusd_acl_init_client(struct ubus_client *cl, int fd)
|
||||
{
|
||||
unsigned int len = sizeof(struct ucred);
|
||||
struct ucred cred;
|
||||
struct passwd *pwd;
|
||||
struct group *group;
|
||||
|
||||
#ifdef SO_PEERCRED
|
||||
unsigned int len = sizeof(struct ucred);
|
||||
|
||||
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &cred, &len) == -1)
|
||||
return -1;
|
||||
#else
|
||||
memset(&cred, 0, sizeof(cred));
|
||||
#endif
|
||||
|
||||
pwd = getpwuid(cred.uid);
|
||||
if (!pwd)
|
||||
|
|
Loading…
Reference in a new issue