diff options
| author | Noriko Hosoi <nhosoi@redhat.com> | 2007-11-14 20:18:53 +0000 |
|---|---|---|
| committer | Noriko Hosoi <nhosoi@redhat.com> | 2007-11-14 20:18:53 +0000 |
| commit | 7c58411ef851a5c8a10dde57f4d2eeee076f15c1 (patch) | |
| tree | 31522093056b5b677e63f44c8ba0672699fdecc3 | |
| parent | b0b81ec8ce6496d205ddc02b0c26aac19b4af828 (diff) | |
Resolves: #383141
Summary: listenhost: hostname associated with multiple addresses
1) parentheses were needed around *addr, which should have been evaluated
before the array.
2) fixed a small memory leak.
| -rw-r--r-- | ldap/servers/slapd/daemon.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/ldap/servers/slapd/daemon.c b/ldap/servers/slapd/daemon.c index 714f32ee..8bdd6521 100644 --- a/ldap/servers/slapd/daemon.c +++ b/ldap/servers/slapd/daemon.c @@ -2870,11 +2870,11 @@ slapd_listenhost2addr(const char *listenhost, PRNetAddr ***addr) slapi_ch_free ((void**)&netaddr); } *addr = (PRNetAddr **)slapi_ch_calloc(2, sizeof (PRNetAddr *)); - *addr[0] = netaddr; + (*addr)[0] = netaddr; } else if (PR_SUCCESS == PR_StringToNetAddr(listenhost, netaddr)) { /* PR_StringNetAddr newer than NSPR v4.6.2 supports both IPv4&v6 */; *addr = (PRNetAddr **)slapi_ch_calloc(2, sizeof (PRNetAddr *)); - *addr[0] = netaddr; + (*addr)[0] = netaddr; } else { PRAddrInfo *infop = PR_GetAddrInfoByName( listenhost, PR_AF_UNSPEC, (PR_AI_ADDRCONFIG|PR_AI_NOCANONNAME) ); @@ -2901,9 +2901,10 @@ slapd_listenhost2addr(const char *listenhost, PRNetAddr ***addr) for ( i = 0; i < addrcnt; i++ ) { iter = PR_EnumerateAddrInfo( iter, infop, 0, netaddr ); if ( NULL == iter ) { + slapi_ch_free((void **)&netaddr); /* not used */ break; } - *addr[i] = netaddr; + (*addr)[i] = netaddr; netaddr = (PRNetAddr *)slapi_ch_calloc(1, sizeof(PRNetAddr)); } } |
