main: disable nscd properly, if possible
This commit is contained in:
parent
444a79d340
commit
afea26ad7d
|
@ -91,6 +91,7 @@ LT_PREREQ(2.2)
|
||||||
LT_INIT
|
LT_INIT
|
||||||
|
|
||||||
AC_SEARCH_LIBS([clock_gettime], [rt], [], [AC_MSG_ERROR([*** POSIX RT library not found])])
|
AC_SEARCH_LIBS([clock_gettime], [rt], [], [AC_MSG_ERROR([*** POSIX RT library not found])])
|
||||||
|
AC_SEARCH_LIBS([dlsym], [dl], [], [AC_MSG_ERROR([*** Dynamic linking loader library not found])])
|
||||||
AC_SEARCH_LIBS([cap_init], [cap], [], [AC_MSG_ERROR([*** POSIX caps library not found])])
|
AC_SEARCH_LIBS([cap_init], [cap], [], [AC_MSG_ERROR([*** POSIX caps library not found])])
|
||||||
AC_CHECK_HEADERS([sys/capability.h], [], [AC_MSG_ERROR([*** POSIX caps headers not found])])
|
AC_CHECK_HEADERS([sys/capability.h], [], [AC_MSG_ERROR([*** POSIX caps headers not found])])
|
||||||
|
|
||||||
|
|
2
fixme
2
fixme
|
@ -79,8 +79,6 @@
|
||||||
|
|
||||||
* plymouth different shut down msgs
|
* plymouth different shut down msgs
|
||||||
|
|
||||||
* fix nscd disable
|
|
||||||
|
|
||||||
External:
|
External:
|
||||||
|
|
||||||
* sysv functions should color when stdout is tty, not stdin
|
* sysv functions should color when stdout is tty, not stdin
|
||||||
|
|
|
@ -994,11 +994,7 @@ int main(int argc, char *argv[]) {
|
||||||
|
|
||||||
/* Disable nscd, to avoid deadlocks when systemd uses
|
/* Disable nscd, to avoid deadlocks when systemd uses
|
||||||
* NSS and the nscd socket is maintained by us. */
|
* NSS and the nscd socket is maintained by us. */
|
||||||
/* if (nss_disable_nscd) { */
|
nss_disable_nscd();
|
||||||
/* log_debug("Disabling nscd"); */
|
|
||||||
/* nss_disable_nscd(); */
|
|
||||||
/* } else */
|
|
||||||
/* log_debug("Hmm, can't disable nscd."); */
|
|
||||||
|
|
||||||
if (!serialization) {
|
if (!serialization) {
|
||||||
if (arg_show_status)
|
if (arg_show_status)
|
||||||
|
|
|
@ -55,14 +55,6 @@ static inline int pivot_root(const char *new_root, const char *put_old) {
|
||||||
return syscall(SYS_pivot_root, new_root, put_old);
|
return syscall(SYS_pivot_root, new_root, put_old);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This is an internal glibc function call. We are not supposed to
|
|
||||||
* call this, because we are not nscd. However sometimes we feel
|
|
||||||
* really dangerous and do it nonetheless. Muahahah! But at least we
|
|
||||||
* protect this with a weak ref just in case glibc takes this away
|
|
||||||
* from us. */
|
|
||||||
|
|
||||||
/* static void nss_disable_nscd(void) _weakref_(__nss_disable_nscd); */
|
|
||||||
|
|
||||||
#ifndef AUDIT_SERVICE_START
|
#ifndef AUDIT_SERVICE_START
|
||||||
#define AUDIT_SERVICE_START 1130 /* Service (daemon) start */
|
#define AUDIT_SERVICE_START 1130 /* Service (daemon) start */
|
||||||
#endif
|
#endif
|
||||||
|
|
19
src/util.c
19
src/util.c
|
@ -48,6 +48,7 @@
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#include <netinet/ip.h>
|
#include <netinet/ip.h>
|
||||||
#include <linux/kd.h>
|
#include <linux/kd.h>
|
||||||
|
#include <dlfcn.h>
|
||||||
|
|
||||||
#include "macro.h"
|
#include "macro.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
@ -2979,6 +2980,24 @@ char *ellipsize(const char *s, unsigned length, unsigned percent) {
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void nss_disable_nscd(void) {
|
||||||
|
|
||||||
|
void (*func)(void);
|
||||||
|
|
||||||
|
/* This is an internal glibc function call. We are not
|
||||||
|
* supposed to call this, because we are not nscd. However
|
||||||
|
* sometimes we feel really dangerous and do it
|
||||||
|
* nonetheless. Muahahah! But at least we protect this with a
|
||||||
|
* dlsym() just in case glibc takes this away from us. */
|
||||||
|
|
||||||
|
if ((func = dlsym(RTLD_DEFAULT, "__nss_disable_nscd"))) {
|
||||||
|
log_debug("Disabling nscd.");
|
||||||
|
func();
|
||||||
|
} else
|
||||||
|
log_debug("Cannot disable nscd.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static const char *const ioprio_class_table[] = {
|
static const char *const ioprio_class_table[] = {
|
||||||
[IOPRIO_CLASS_NONE] = "none",
|
[IOPRIO_CLASS_NONE] = "none",
|
||||||
[IOPRIO_CLASS_RT] = "realtime",
|
[IOPRIO_CLASS_RT] = "realtime",
|
||||||
|
|
|
@ -336,6 +336,8 @@ int running_in_chroot(void);
|
||||||
|
|
||||||
char *ellipsize(const char *s, unsigned length, unsigned percent);
|
char *ellipsize(const char *s, unsigned length, unsigned percent);
|
||||||
|
|
||||||
|
void nss_disable_nscd(void);
|
||||||
|
|
||||||
const char *ioprio_class_to_string(int i);
|
const char *ioprio_class_to_string(int i);
|
||||||
int ioprio_class_from_string(const char *s);
|
int ioprio_class_from_string(const char *s);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue