Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/nss/networks.c
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2006-11-28 10:59:32 +0100
committerArthur de Jong <arthur@arthurdejong.org>2006-11-28 10:59:32 +0100
commitd524c2cfc47a4d5217957e8e910611de9fb5b0fd (patch)
treec5c51d0b1c4e94abf0ea81a617362aaaeaf5a687 /nss/networks.c
parent74c2c4909d84fc5d9a7f082e11e50efc20d450f9 (diff)
implement network name lookups on server side plus some fixes on the client side
git-svn-id: http://arthurdejong.org/svn/nss-pam-ldapd/libnss_ldapd@130 ef36b2f9-881f-0410-afb5-c4e39611909c
Diffstat (limited to 'nss/networks.c')
-rw-r--r--nss/networks.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/nss/networks.c b/nss/networks.c
index 4290c3e..f459f59 100644
--- a/nss/networks.c
+++ b/nss/networks.c
@@ -73,13 +73,15 @@ static enum nss_status read_netent(
READ_INT32(fp,tmp2int32);
if ((readaf==AF_INET)&&(tmp2int32==4))
{
- /* read address */
- READ_INT32(fp,result->n_net);
+ /* read address and translate to host byte order */
+ READ_TYPE(fp,tmpint32,int32_t);
+ result->n_net=ntohl(tmpint32);
/* signal that we've read a proper entry */
retv=NSS_STATUS_SUCCESS;
}
else
{
+ /* skip unsupported address families */
SKIP(fp,tmpint32);
}
}
@@ -130,6 +132,7 @@ enum nss_status _nss_ldap_getnetbyaddr_r(uint32_t addr,int af,struct netent *res
/* write the address */
WRITE_INT32(fp,AF_INET);
WRITE_INT32(fp,4);
+ addr=htonl(addr);
WRITE_INT32(fp,addr);
WRITE_FLUSH(fp);
/* read response */
@@ -176,7 +179,7 @@ enum nss_status _nss_ldap_getnetent_r(struct netent *result,char *buffer,size_t
retv=read_netent(netentfp,result,buffer,buflen,errnop,h_errnop);
/* do another loop run if we read an empty address list */
}
- while ((retv==NSS_STATUS_SUCCESS)||(retv==NSS_STATUS_NOTFOUND));
+ while (retv==NSS_STATUS_NOTFOUND);
return retv;
}