diff options
author | Jeremy Allison <jra@samba.org> | 2007-11-02 10:25:34 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2007-11-02 10:25:34 -0700 |
commit | e075b3692bb2c9507231f0662010fc55c1b506c4 (patch) | |
tree | ece2f7f175588f838be4d403c461f7407fcf1bb4 /source3/lib/system.c | |
parent | 78cdd6e7eca44346377346fa6d84a9b59a8f5624 (diff) | |
download | samba-e075b3692bb2c9507231f0662010fc55c1b506c4.tar.gz samba-e075b3692bb2c9507231f0662010fc55c1b506c4.tar.bz2 samba-e075b3692bb2c9507231f0662010fc55c1b506c4.zip |
Fix Solaris by ensuring we use the IPv4 or IPv6 length
in any getnameinfo calls.
Jeremy
(This used to be commit 4d7badb0c44f287034f58d9a412e662c0fbecdc9)
Diffstat (limited to 'source3/lib/system.c')
-rw-r--r-- | source3/lib/system.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/source3/lib/system.c b/source3/lib/system.c index 604228233c..fe4e700176 100644 --- a/source3/lib/system.c +++ b/source3/lib/system.c @@ -2545,3 +2545,27 @@ int sys_getpeereid( int s, uid_t *uid) return -1; #endif } + +int sys_getnameinfo(const struct sockaddr *psa, + socklen_t salen, + char *host, + size_t hostlen, + char *service, + size_t servlen, + int flags) +{ + /* + * For Solaris we must make sure salen is the + * correct length for the incoming sa_family. + */ + + if (salen == sizeof(struct sockaddr_storage)) { + salen = sizeof(struct sockaddr_in); +#if defined(HAVE_IPV6) + if (psa->sa_family == AF_INET6) { + salen = sizeof(struct sockaddr_in6); + } +#endif + } + return getnameinfo(psa, salen, host, hostlen, service, servlen, flags); +} |