From ffd69c9a0fd2c7e3f0c7443ddb39f1d94957182a Mon Sep 17 00:00:00 2001 From: Arthur de Jong Date: Mon, 8 Jan 2007 22:26:29 +0000 Subject: use our own thread-local file pointer for doing requests instead of misusing the data field in the __netgrent struct git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/nss-ldapd@214 ef36b2f9-881f-0410-afb5-c4e39611909c --- nss/netgroup.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) (limited to 'nss/netgroup.c') diff --git a/nss/netgroup.c b/nss/netgroup.c index 1ea602e..249f234 100644 --- a/nss/netgroup.c +++ b/nss/netgroup.c @@ -78,8 +78,12 @@ static enum nss_status read_netgrent( return NSS_STATUS_SUCCESS; } +/* thread-local file pointer to an ongoing request */ +static __thread FILE *netgrentfp; + enum nss_status _nss_ldap_setnetgrent(const char *group,struct __netgrent *result) { + /* we cannot use NSS_SETENT() here because we have a parameter */ int32_t tmpint32; int errnocp; int *errnop; @@ -88,22 +92,21 @@ enum nss_status _nss_ldap_setnetgrent(const char *group,struct __netgrent *resul if ((group==NULL)||(group[0]=='\0')) return NSS_STATUS_UNAVAIL; /* open a new stream and write the request */ - OPEN_SOCK(result->data); - WRITE_REQUEST(result->data,NSLCD_ACTION_NETGROUP_BYNAME); - WRITE_STRING(result->data,group); - WRITE_FLUSH(result->data); + OPEN_SOCK(netgrentfp); + WRITE_REQUEST(netgrentfp,NSLCD_ACTION_NETGROUP_BYNAME); + WRITE_STRING(netgrentfp,group); + WRITE_FLUSH(netgrentfp); /* read response header */ - READ_RESPONSEHEADER(result->data,NSLCD_ACTION_NETGROUP_BYNAME); + READ_RESPONSEHEADER(netgrentfp,NSLCD_ACTION_NETGROUP_BYNAME); return NSS_STATUS_SUCCESS; -/* fixme: this should probably also set result->known_groups */ } enum nss_status _nss_ldap_getnetgrent_r(struct __netgrent *result,char *buffer,size_t buflen,int *errnop) { - NSS_GETENT(result->data,read_netgrent); + NSS_GETENT(netgrentfp,read_netgrent); } enum nss_status _nss_ldap_endnetgrent(struct __netgrent *result) { - NSS_ENDENT(result->data); + NSS_ENDENT(netgrentfp); } -- cgit v1.2.3