ubusd: log ACL init errors
This makes it easier to notice ubusd (and so often a system) failing to start properly. Some users reported procd failing to initialize fully without a clear error in case of faulty /etc/passwd. Signed-off-by: Rafał Miłecki <rafal@milecki.pl> Acked-by: John Crispin <john@phrozen.org>
This commit is contained in:
parent
4fc532c8a5
commit
b743a33142
2 changed files with 13 additions and 3 deletions
13
ubusd_acl.c
13
ubusd_acl.c
|
@ -26,6 +26,7 @@
|
|||
#include <libubox/vlist.h>
|
||||
#include <libubox/blobmsg_json.h>
|
||||
#include <libubox/avl-cmp.h>
|
||||
#include <libubox/ulog.h>
|
||||
|
||||
#include "ubusd.h"
|
||||
|
||||
|
@ -175,19 +176,25 @@ ubusd_acl_init_client(struct ubus_client *cl, int fd)
|
|||
#ifdef SO_PEERCRED
|
||||
unsigned int len = sizeof(struct ucred);
|
||||
|
||||
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &cred, &len) == -1)
|
||||
if (getsockopt(fd, SOL_SOCKET, SO_PEERCRED, &cred, &len) == -1) {
|
||||
ULOG_ERR("Failed getsockopt(): %m\n");
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
memset(&cred, 0, sizeof(cred));
|
||||
#endif
|
||||
|
||||
pwd = getpwuid(cred.uid);
|
||||
if (!pwd)
|
||||
if (!pwd) {
|
||||
ULOG_ERR("Failed getpwuid(): %m\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
group = getgrgid(cred.gid);
|
||||
if (!group)
|
||||
if (!group) {
|
||||
ULOG_ERR("Failed getgrgid(): %m\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
cl->uid = cred.uid;
|
||||
cl->gid = cred.gid;
|
||||
|
|
|
@ -233,6 +233,8 @@ static void mkdir_sockdir()
|
|||
free(ubus_sock_dir);
|
||||
}
|
||||
|
||||
#include <libubox/ulog.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
const char *ubus_socket = UBUS_UNIX_SOCKET;
|
||||
|
@ -242,6 +244,7 @@ int main(int argc, char **argv)
|
|||
signal(SIGPIPE, SIG_IGN);
|
||||
signal(SIGHUP, sighup_handler);
|
||||
|
||||
ulog_open(ULOG_KMSG | ULOG_SYSLOG, LOG_DAEMON, "ubusd");
|
||||
openlog("ubusd", LOG_PID, LOG_DAEMON);
|
||||
uloop_init();
|
||||
|
||||
|
|
Loading…
Reference in a new issue