src/Makefile | 5 +++-- src/genhomedircon.c | 26 +++++++++++++++++++------- src/libsemanage.pc.in | 3 +-- 3 files changed, 23 insertions(+), 11 deletions(-) diff --git a/src/Makefile b/src/Makefile index ab6cae51..37bb7dc6 100644 --- a/src/Makefile +++ b/src/Makefile @@ -135,12 +135,13 @@ swigify: $(SWIGIF) install: all test -d $(DESTDIR)$(LIBDIR) || install -m 755 -d $(DESTDIR)$(LIBDIR) + test -d $(DESTDIR)$(SHLIBDIR) || install -m 755 -d $(DESTDIR)$(SHLIBDIR) install -m 644 $(LIBA) $(DESTDIR)$(LIBDIR) - install -m 755 $(LIBSO) $(DESTDIR)$(LIBDIR) + install -m 755 $(LIBSO) $(DESTDIR)$(SHLIBDIR) test -d $(DESTDIR)$(LIBDIR)/pkgconfig || install -m 755 -d $(DESTDIR)$(LIBDIR)/pkgconfig install -m 644 $(LIBPC) $(DESTDIR)$(LIBDIR)/pkgconfig test -f $(DESTDIR)$(DEFAULT_SEMANAGE_CONF_LOCATION) || install -m 644 -D semanage.conf $(DESTDIR)$(DEFAULT_SEMANAGE_CONF_LOCATION) - cd $(DESTDIR)$(LIBDIR) && ln -sf $(LIBSO) $(TARGET) + cd $(DESTDIR)$(LIBDIR) && ln -sfr $(DESTDIR)$(SHLIBDIR)/$(LIBSO) $(TARGET) install-pywrap: pywrap test -d $(DESTDIR)$(PYTHONLIBDIR) || install -m 755 -d $(DESTDIR)$(PYTHONLIBDIR) diff --git a/src/genhomedircon.c b/src/genhomedircon.c index d08c88de..a8c4b06b 100644 --- a/src/genhomedircon.c +++ b/src/genhomedircon.c @@ -59,6 +59,8 @@ #define PATH_DEFAULT_HOME "/home" #define PATH_EXPORT_HOME "/export/home" #define PATH_ETC_LOGIN_DEFS "/etc/login.defs" +#define PATH_SRV_HOME "/srv/home" +#define PATH_VAR_SRV_HOME "/var/srv/home" /* other paths */ #define PATH_SHELLS_FILE "/etc/shells" @@ -287,6 +289,15 @@ done: return retval; } +static int push_extra_homedirs(semanage_list_t **phomedir_list, const char *path) +{ + struct stat buf; + + if (!lstat(path, &buf) && S_ISDIR(buf.st_mode)) + return semanage_list_push(phomedir_list, path); + return 0; +} + static semanage_list_t *get_home_dirs(genhomedircon_settings_t * s) { semanage_list_t *homedir_list = NULL; @@ -319,13 +330,14 @@ static semanage_list_t *get_home_dirs(genhomedircon_settings_t * s) } } - if (!stat(PATH_EXPORT_HOME, &buf)) { - if (S_ISDIR(buf.st_mode)) { - if (semanage_list_push(&homedir_list, PATH_EXPORT_HOME)) { - goto fail; - } - } - } + if (push_extra_homedirs(&homedir_list, PATH_EXPORT_HOME)) + goto fail; + + if (push_extra_homedirs(&homedir_list, PATH_SRV_HOME)) + goto fail; + + if (push_extra_homedirs(&homedir_list, PATH_VAR_SRV_HOME)) + goto fail; if (!(s->usepasswd)) return homedir_list; diff --git a/src/libsemanage.pc.in b/src/libsemanage.pc.in index 43681ddb..8bb62c48 100644 --- a/src/libsemanage.pc.in +++ b/src/libsemanage.pc.in @@ -7,7 +7,6 @@ Name: libsemanage Description: SELinux management library Version: @VERSION@ URL: http://userspace.selinuxproject.org/ -Requires.private: libselinux libsepol Libs: -L${libdir} -lsemanage -Libs.private: -lbz2 +Libs.private: -lbz2 -lselinux -lsepol Cflags: -I${includedir}