Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 1 addition & 6 deletions compat/getpeercred.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,14 +101,9 @@ int getpeercred(int sock, uid_t *uid, gid_t *gid, pid_t *pid)
if (uid == NULL)
uid = &tuid;
if (gid == NULL)
gid = &tguid;
gid = &tgid;
if (getpeereid(sock, uid, gid))
return -1;
/* return the data */
if (uid != NULL)
*uid = cred.uid;
if (gid != NULL)
*gid = cred.gid;
if (pid != NULL)
*pid = -1; /* we return a -1 pid because we have no usable pid */
return 0;
Expand Down
35 changes: 20 additions & 15 deletions compat/nss_compat.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,27 +54,32 @@

/* define missing status codes */
#ifndef HAVE_ENUM_NSS_STATUS
#ifndef NSS_STATUS_SUCCESS
#define NSS_STATUS_SUCCESS NSS_SUCCESS
#endif
#ifndef NSS_STATUS_NOTFOUND
#define NSS_STATUS_NOTFOUND NSS_NOTFOUND
#endif
#ifndef NSS_STATUS_UNAVAIL
#define NSS_STATUS_UNAVAIL NSS_UNAVAIL
#endif
#ifndef NSS_STATUS_TRYAGAIN
#define NSS_STATUS_TRYAGAIN NSS_TRYAGAIN

/* NetBSD flavour */
#ifdef NS_SUCCESS
enum nss_status {
NSS_STATUS_SUCCESS = NS_SUCCESS,
NSS_STATUS_NOTFOUND = NS_NOTFOUND,
NSS_STATUS_UNAVAIL = NS_UNAVAIL,
NSS_STATUS_TRYAGAIN = NS_TRYAGAIN,
NSS_STATUS_RETURN = NS_RETURN,
};
#endif
#ifndef NSS_STATUS_RETURN
#define NSS_STATUS_RETURN NSS_NOTFOUND

/* FreeBSD flavour */
#ifdef NSS_SUCCESS
enum nss_status {
NSS_STATUS_SUCCESS = NSS_SUCCESS,
NSS_STATUS_NOTFOUND = NSS_NOTFOUND,
NSS_STATUS_UNAVAIL = NSS_UNAVAIL,
NSS_STATUS_TRYAGAIN = NS_TRYAGAIN,
NSS_STATUS_RETURN = NSS_RETURN,
};
#endif
#endif /* not HAVE_ENUM_NSS_STATUS */

/* define nss_status_t */
#ifdef HAVE_ENUM_NSS_STATUS
typedef enum nss_status nss_status_t;
#endif

/* Define an aliasent if it was not found on the system. */
#ifndef HAVE_STRUCT_ALIASENT
Expand Down
26 changes: 25 additions & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -287,13 +287,32 @@ then
case "$target_os" in
solaris*) PAM_SECLIB_DIR="/usr/lib/security" ;;
freebsd*|dragonfly*) PAM_SECLIB_DIR="/usr/lib" ;;
netbsd*) PAM_SECLIB_DIR="/usr/lib/security" ;;
*) PAM_SECLIB_DIR="/lib/security" ;;
esac
fi
AC_MSG_RESULT($PAM_SECLIB_DIR)
AC_DEFINE_UNQUOTED(PAM_SECLIB_DIR, "$PAM_SECLIB_DIR", [path to PAM security library])
AC_SUBST(PAM_SECLIB_DIR)

# the directory NSS librabries are expected to be placed into
AC_MSG_CHECKING([location for NSS module])
AC_ARG_WITH(nss-libdir,
AS_HELP_STRING([--with-nss-libdir=NSS_LIBDIR],
[path to NSS security library @<:@auto@:>@]),
[ NSS_LIBDIR="$with_nss_libdir" ],
[ NSS_LIBDIR="auto" ])
if test "x$NSS_LIBDIR" = "xauto"
then
case "$target_os" in
netbsd*) NSS_LIBDIR="/usr/lib" ;;
*) NSS_LIBDIR="/lib" ;;
esac
fi
AC_MSG_RESULT($NSS_LIBDIR)
AC_DEFINE_UNQUOTED(NSS_LIBDIR, "$NSS_LIBDIR", [path to NSS security library])
AC_SUBST(NSS_LIBDIR)

# the name to use for the NSS module
AC_MSG_CHECKING([name of NSS and PAM modules])
AC_ARG_WITH(module-name,
Expand All @@ -320,6 +339,7 @@ then
case "$target_os" in
solaris*) NSS_LDAP_SONAME="nss_$MODULE_NAME.so.1" ;;
freebsd*|dragonfly*) NSS_LDAP_SONAME="nss_$MODULE_NAME.so.1" ;;
netbsd*) NSS_LDAP_SONAME="nss_$MODULE_NAME.so.0" ;;
*) NSS_LDAP_SONAME="libnss_$MODULE_NAME.so.2" ;;
esac
fi
Expand Down Expand Up @@ -517,7 +537,7 @@ then
# check which NSS flavour to build
AC_MSG_CHECKING([which NSS flavour to build])
AC_ARG_WITH(nss-flavour,
AS_HELP_STRING([--with-nss-flavour=auto|glibc|solaris|freebsd],
AS_HELP_STRING([--with-nss-flavour=auto|glibc|solaris|freebsd|netbsd],
[the libc flavour to build our NSS module for @<:@auto@:>@]),,
with_nss_flavour=auto)
if test "x$with_nss_flavour" = "xauto"
Expand All @@ -526,6 +546,7 @@ then
case "$target_os" in
solaris*) with_nss_flavour=solaris ;;
freebsd*|dragonfly*) with_nss_flavour=freebsd ;;
netbsd*) with_nss_flavour=netbsd ;;
*) with_nss_flavour=glibc ;;
esac
fi
Expand All @@ -534,6 +555,7 @@ then
glibc) AC_DEFINE(NSS_FLAVOUR_GLIBC, 1, [Whether to use the Glibc NSS interface flavour.]) ;;
solaris) AC_DEFINE(NSS_FLAVOUR_SOLARIS, 1, [Whether to use the Solaris NSS interface flavour.]) ;;
freebsd) AC_DEFINE(NSS_FLAVOUR_FREEBSD, 1, [Whether to use the FreeBSD NSS interface flavour.]) ;;
netbsd) AC_DEFINE(NSS_FLAVOUR_NETBSD, 1, [Whether to use the NetBSD NSS interface flavour.]) ;;
esac
NSS_FLAVOUR="$with_nss_flavour"
AC_SUBST(NSS_FLAVOUR)
Expand All @@ -546,6 +568,7 @@ then
glibc) with_nss_maps="aliases,ethers,group,hosts,netgroup,networks,passwd,protocols,rpc,services,shadow" ;;
solaris) with_nss_maps="ethers,group,hosts,netgroup,networks,passwd,protocols,rpc,services,shadow" ;;
freebsd) with_nss_maps="group,hosts,passwd,netgroup" ;;
netbsd) with_nss_maps="group,hosts,passwd,netgroup" ;;
esac
fi
AC_MSG_RESULT($with_nss_maps)
Expand Down Expand Up @@ -1032,6 +1055,7 @@ fi
AM_CONDITIONAL([NSS_FLAVOUR_GLIBC], [test "x${with_nss_flavour}" = xglibc])
AM_CONDITIONAL([NSS_FLAVOUR_SOLARIS], [test "x${with_nss_flavour}" = xsolaris])
AM_CONDITIONAL([NSS_FLAVOUR_FREEBSD], [test "x${with_nss_flavour}" = xfreebsd])
AM_CONDITIONAL([NSS_FLAVOUR_NETBSD], [test "x${with_nss_flavour}" = xnetbsd])

# generate files
AC_CONFIG_FILES([Makefile compat/Makefile common/Makefile nss/Makefile
Expand Down
17 changes: 10 additions & 7 deletions nss/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,21 @@ nss_ldap_so_SOURCES = common.c common.h prototypes.h solnss.h \
../compat/attrs.h
EXTRA_nss_ldap_so_SOURCES = aliases.c ethers.c group.c hosts.c netgroup.c \
networks.c passwd.c protocols.c rpc.c services.c \
shadow.c solnss.c bsdnss.c
shadow.c solnss.c freebsdnss.c netbsdnss.c
nss_ldap_so_LDADD = $(NSS_MODULE_OBJS)
if NSS_FLAVOUR_SOLARIS
nss_ldap_so_LDADD += solnss.$(OBJEXT) ../common/libdict.a
endif
if NSS_FLAVOUR_FREEBSD
nss_ldap_so_LDADD += bsdnss.$(OBJEXT)
nss_ldap_so_LDADD += freebsdnss.$(OBJEXT)
endif
if NSS_FLAVOUR_NETBSD
nss_ldap_so_LDADD += netbsdnss.$(OBJEXT)
endif
nss_ldap_so_LDADD += ../common/libtio.a ../common/libprot.a
nss_ldap_so_DEPENDENCIES = $(nss_ldap_so_LDADD) exports.map

EXTRA_DIST = exports.glibc exports.solaris exports.freebsd
EXTRA_DIST = exports.glibc exports.solaris exports.freebsd exports.netbsd
CLEANFILES = exports.map

exports.map: $(EXTRA_DIST) Makefile
Expand All @@ -51,9 +54,9 @@ install-exec-local: install-nss_ldap_so
uninstall-local: uninstall-nss_ldap_so

install-nss_ldap_so: nss_ldap.so
-rm -f $(DESTDIR)$(libdir)/$(NSS_LDAP_SONAME)
$(mkinstalldirs) $(DESTDIR)$(libdir)
$(INSTALL_PROGRAM) nss_ldap.so $(DESTDIR)$(libdir)/$(NSS_LDAP_SONAME)
-rm -f $(DESTDIR)$(NSS_LIBDIR)/$(NSS_LDAP_SONAME)
$(mkinstalldirs) $(DESTDIR)$(NSS_LIBDIR)
$(INSTALL_PROGRAM) nss_ldap.so $(DESTDIR)$(NSS_LIBDIR)/$(NSS_LDAP_SONAME)

uninstall-nss_ldap_so:
-rm -f $(DESTDIR)$(libdir)/$(NSS_LDAP_SONAME)
-rm -f $(DESTDIR)$(NSS_LIBDIR)/$(NSS_LDAP_SONAME)
19 changes: 19 additions & 0 deletions nss/exports.netbsd
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
EXPORTED {

# published NSS service functions
global:

# flag to enable or disable lookups
_nss_ldap_enablelookups;

# version information of NSS module
_nss_ldap_version;

# module init
nss_module_register;

# everything else should not be exported
local:
*;

};
File renamed without changes.
Loading