diff options
author | Arthur de Jong <arthur@arthurdejong.org> | 2006-11-28 10:59:32 +0100 |
---|---|---|
committer | Arthur de Jong <arthur@arthurdejong.org> | 2006-11-28 10:59:32 +0100 |
commit | d524c2cfc47a4d5217957e8e910611de9fb5b0fd (patch) | |
tree | c5c51d0b1c4e94abf0ea81a617362aaaeaf5a687 /nss/networks.c | |
parent | 74c2c4909d84fc5d9a7f082e11e50efc20d450f9 (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.c | 9 |
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; } |