summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2010-10-11 20:12:59 +0000
committerArthur de Jong <arthur@arthurdejong.org>2010-10-11 20:12:59 +0000
commit90fec72d7d1390d0744622928c6648355d3f6f33 (patch)
treebd09214dd94179b152d738e8d4798bd9595b86df
parent11428fdf252a18551d64fb6a119e44eab2d2c5d9 (diff)
also try to support older Solaris releases that do not have the returnlen member of struct nss_XbyY_args
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-pam-ldapd-solaris@1262 ef36b2f9-881f-0410-afb5-c4e39611909c
-rw-r--r--nss/ethers.c15
-rw-r--r--nss/group.c15
-rw-r--r--nss/hosts.c23
-rw-r--r--nss/networks.c15
-rw-r--r--nss/passwd.c15
-rw-r--r--nss/protocols.c15
-rw-r--r--nss/rpc.c15
-rw-r--r--nss/services.c15
-rw-r--r--nss/shadow.c15
9 files changed, 123 insertions, 20 deletions
diff --git a/nss/ethers.c b/nss/ethers.c
index 56cc0ee..75b09e9 100644
--- a/nss/ethers.c
+++ b/nss/ethers.c
@@ -96,6 +96,8 @@ nss_status_t _nss_ldap_endetherent(void)
#define NSS_BUFLEN_ETHERS 1024
#endif /* NSS_BUFLEN_ETHERS */
+#ifdef HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN
+
static nss_status_t read_etherstring(TFILE *fp,nss_XbyY_args_t *args)
{
/* TODO: padl uses struct ether, verify */
@@ -129,8 +131,17 @@ static nss_status_t read_etherstring(TFILE *fp,nss_XbyY_args_t *args)
NSS_ARGS(args)->buf.result? \
read_etherent(fp,(struct etherent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno): \
read_etherstring(fp,args); \
- if (NSS_ARGS(args)->buf.result) \
- NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result
+ if ((NSS_ARGS(args)->buf.result)&&(retv=NSS_STATUS_SUCCESS)) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#else /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
+
+#define READ_RESULT(fp) \
+ read_etherent(fp,(struct etherent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno); \
+ if (retv=NSS_STATUS_SUCCESS) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#endif /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
/* map a hostname to the corresponding ethernet address */
static nss_status_t get_gethostton(nss_backend_t UNUSED(*be),void *args)
diff --git a/nss/group.c b/nss/group.c
index cd68689..ef1461b 100644
--- a/nss/group.c
+++ b/nss/group.c
@@ -183,6 +183,8 @@ nss_status_t _nss_ldap_initgroups_dyn(
#ifdef NSS_FLAVOUR_SOLARIS
+#ifdef HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN
+
static nss_status_t read_groupstring(TFILE *fp,nss_XbyY_args_t *args)
{
struct group result;
@@ -219,8 +221,17 @@ static nss_status_t read_groupstring(TFILE *fp,nss_XbyY_args_t *args)
NSS_ARGS(args)->buf.result? \
read_group(fp,(struct group *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno): \
read_groupstring(fp,args); \
- if (NSS_ARGS(args)->buf.result) \
- NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result
+ if ((NSS_ARGS(args)->buf.result)&&(retv=NSS_STATUS_SUCCESS)) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#else /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
+
+#define READ_RESULT(fp) \
+ read_group(fp,(struct group *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno); \
+ if (retv=NSS_STATUS_SUCCESS) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#endif /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
static nss_status_t get_getgrnam_r(nss_backend_t UNUSED(*be),void *args)
{
diff --git a/nss/hosts.c b/nss/hosts.c
index 3037a10..8a699f3 100644
--- a/nss/hosts.c
+++ b/nss/hosts.c
@@ -242,6 +242,8 @@ nss_status_t _nss_ldap_endhostent(void)
#ifdef NSS_FLAVOUR_SOLARIS
+#ifdef HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN
+
static nss_status_t read_hoststring(TFILE *fp,nss_XbyY_args_t *args,int erronempty)
{
struct hostent result;
@@ -298,16 +300,29 @@ static nss_status_t read_hoststring(TFILE *fp,nss_XbyY_args_t *args,int erronemp
NSS_ARGS(args)->buf.result? \
read_hostent_erronempty(fp,NSS_ARGS(args)->key.hostaddr.type,(struct hostent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno,&(NSS_ARGS(args)->h_errno)): \
read_hoststring(fp,args,1); \
- if (NSS_ARGS(args)->buf.result) \
- NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result
+ if ((NSS_ARGS(args)->buf.result)&&(retv=NSS_STATUS_SUCCESS)) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
#define READ_RESULT_NEXTONEMPTY(fp) \
NSS_ARGS(args)->buf.result? \
read_hostent_nextonempty(fp,NSS_ARGS(args)->key.hostaddr.type,(struct hostent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno,&(NSS_ARGS(args)->h_errno)): \
read_hoststring(fp,args,0); \
- if (NSS_ARGS(args)->buf.result) \
- NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result
+ if ((NSS_ARGS(args)->buf.result)&&(retv=NSS_STATUS_SUCCESS)) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#else /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
+
+#define READ_RESULT_ERRONEMPTY(fp) \
+ read_hostent_erronempty(fp,NSS_ARGS(args)->key.hostaddr.type,(struct hostent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno,&(NSS_ARGS(args)->h_errno)); \
+ if (retv=NSS_STATUS_SUCCESS) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#define READ_RESULT_NEXTONEMPTY(fp) \
+ read_hostent_nextonempty(fp,NSS_ARGS(args)->key.hostaddr.type,(struct hostent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno,&(NSS_ARGS(args)->h_errno)); \
+ if (retv=NSS_STATUS_SUCCESS) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+#endif /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
/* hack to set the correct errno and h_errno */
#define h_errnop &(NSS_ARGS(args)->h_errno)
diff --git a/nss/networks.c b/nss/networks.c
index f5a5a3d..2a9443b 100644
--- a/nss/networks.c
+++ b/nss/networks.c
@@ -162,6 +162,8 @@ nss_status_t _nss_ldap_endnetent(void)
#ifdef NSS_FLAVOUR_SOLARIS
+#ifdef HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN
+
static nss_status_t read_netentstring(TFILE *fp,nss_XbyY_args_t *args)
{
struct netent result;
@@ -199,8 +201,17 @@ static nss_status_t read_netentstring(TFILE *fp,nss_XbyY_args_t *args)
NSS_ARGS(args)->buf.result? \
read_netent(fp,(struct netent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno,&(NSS_ARGS(args)->h_errno)): \
read_netentstring(fp,args); \
- if (NSS_ARGS(args)->buf.result) \
- NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result
+ if ((NSS_ARGS(args)->buf.result)&&(retv=NSS_STATUS_SUCCESS)) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#else /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
+
+#define READ_RESULT(fp) \
+ read_netent(fp,(struct netent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno,&(NSS_ARGS(args)->h_errno)); \
+ if (retv=NSS_STATUS_SUCCESS) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#endif /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
/* more of a dirty hack */
#define h_errnop (&(NSS_ARGS(args)->h_errno))
diff --git a/nss/passwd.c b/nss/passwd.c
index 112cfa7..2771fbf 100644
--- a/nss/passwd.c
+++ b/nss/passwd.c
@@ -97,6 +97,8 @@ nss_status_t _nss_ldap_endpwent(void)
#ifdef NSS_FLAVOUR_SOLARIS
+#ifdef HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN
+
static nss_status_t read_passwdstring(TFILE *fp,nss_XbyY_args_t *args)
{
struct passwd result;
@@ -127,8 +129,17 @@ static nss_status_t read_passwdstring(TFILE *fp,nss_XbyY_args_t *args)
NSS_ARGS(args)->buf.result? \
read_passwd(fp,(struct passwd *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno): \
read_passwdstring(fp,args); \
- if (NSS_ARGS(args)->buf.result) \
- NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result
+ if ((NSS_ARGS(args)->buf.result)&&(retv=NSS_STATUS_SUCCESS)) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#else /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
+
+#define READ_RESULT(fp) \
+ read_passwd(fp,(struct passwd *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno); \
+ if (retv=NSS_STATUS_SUCCESS) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#endif /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
static nss_status_t get_getpwnam(nss_backend_t UNUSED(*be),void *args)
{
diff --git a/nss/protocols.c b/nss/protocols.c
index 8c55cc3..75c5f32 100644
--- a/nss/protocols.c
+++ b/nss/protocols.c
@@ -93,6 +93,8 @@ nss_status_t _nss_ldap_endprotoent(void)
#ifdef NSS_FLAVOUR_SOLARIS
+#ifdef HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN
+
static nss_status_t read_protostring(TFILE *fp,nss_XbyY_args_t *args)
{
struct protoent result;
@@ -128,8 +130,17 @@ static nss_status_t read_protostring(TFILE *fp,nss_XbyY_args_t *args)
NSS_ARGS(args)->buf.result? \
read_protoent(fp,(struct protoent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno): \
read_protostring(fp,args); \
- if (NSS_ARGS(args)->buf.result) \
- NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result
+ if ((NSS_ARGS(args)->buf.result)&&(retv=NSS_STATUS_SUCCESS)) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#else /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
+
+#define READ_RESULT(fp) \
+ read_protoent(fp,(struct protoent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno); \
+ if (retv=NSS_STATUS_SUCCESS) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#endif /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
static nss_status_t get_getprotobyname(nss_backend_t UNUSED(*be),void *args)
{
diff --git a/nss/rpc.c b/nss/rpc.c
index b7da69c..9b55c8f 100644
--- a/nss/rpc.c
+++ b/nss/rpc.c
@@ -93,6 +93,8 @@ nss_status_t _nss_ldap_endrpcent(void)
#ifdef NSS_FLAVOUR_SOLARIS
+#ifdef HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN
+
static nss_status_t read_rpcstring(TFILE *fp,nss_XbyY_args_t *args)
{
struct rpcent result;
@@ -128,8 +130,17 @@ static nss_status_t read_rpcstring(TFILE *fp,nss_XbyY_args_t *args)
NSS_ARGS(args)->buf.result? \
read_rpcent(fp,(struct rpcent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno): \
read_rpcstring(fp,args); \
- if (NSS_ARGS(args)->buf.result) \
- NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result
+ if ((NSS_ARGS(args)->buf.result)&&(retv=NSS_STATUS_SUCCESS)) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#else /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
+
+#define READ_RESULT(fp) \
+ read_rpcent(fp,(struct rpcent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno); \
+ if (retv=NSS_STATUS_SUCCESS) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#endif /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
static nss_status_t get_getrpcbyname_r(nss_backend_t UNUSED(*be),void *args)
{
diff --git a/nss/services.c b/nss/services.c
index 0d7c23e..db66494 100644
--- a/nss/services.c
+++ b/nss/services.c
@@ -97,6 +97,8 @@ nss_status_t _nss_ldap_endservent(void)
#ifdef NSS_FLAVOUR_SOLARIS
+#ifdef HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN
+
static nss_status_t read_servstring(TFILE *fp,nss_XbyY_args_t *args)
{
struct servent result;
@@ -132,8 +134,17 @@ static nss_status_t read_servstring(TFILE *fp,nss_XbyY_args_t *args)
NSS_ARGS(args)->buf.result? \
read_servent(fp,(struct servent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno): \
read_servstring(fp,args); \
- if (NSS_ARGS(args)->buf.result) \
- NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result
+ if ((NSS_ARGS(args)->buf.result)&&(retv=NSS_STATUS_SUCCESS)) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#else /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
+
+#define READ_RESULT(fp) \
+ read_servent(fp,(struct servent *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno); \
+ if (retv=NSS_STATUS_SUCCESS) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#endif /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
static nss_status_t get_getservbyname_r(nss_backend_t UNUSED(*be),void *args)
{
diff --git a/nss/shadow.c b/nss/shadow.c
index ae025b4..fdcc74f 100644
--- a/nss/shadow.c
+++ b/nss/shadow.c
@@ -89,6 +89,8 @@ nss_status_t _nss_ldap_endspent(void)
#ifdef NSS_FLAVOUR_SOLARIS
+#ifdef HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN
+
static nss_status_t read_spwdstring(TFILE *fp,nss_XbyY_args_t *args)
{
struct spwd result;
@@ -153,8 +155,17 @@ static nss_status_t read_spwdstring(TFILE *fp,nss_XbyY_args_t *args)
NSS_ARGS(args)->buf.result? \
read_spwd(fp,(struct spwd *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno): \
read_spwdstring(fp,args); \
- if (NSS_ARGS(args)->buf.result) \
- NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result
+ if ((NSS_ARGS(args)->buf.result)&&(retv=NSS_STATUS_SUCCESS)) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#else /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
+
+#define READ_RESULT(fp) \
+ read_spwd(fp,(struct spwd *)NSS_ARGS(args)->buf.result,NSS_ARGS(args)->buf.buffer,NSS_ARGS(args)->buf.buflen,&errno); \
+ if (retv=NSS_STATUS_SUCCESS) \
+ NSS_ARGS(args)->returnval=NSS_ARGS(args)->buf.result;
+
+#endif /* not HAVE_STRUCT_NSS_XBYY_ARGS_RETURNLEN */
static nss_status_t get_getspnam_r(nss_backend_t UNUSED(*be),void *args)
{