[PATCH] Ignore port when pulling IP addr from struct
sockaddr_storage.
Gerald (Jerry) Carter
jerry at samba.org
Mon Mar 24 20:24:07 GMT 2008
Linux man page states that getaddinfo() will leave the port
uninitialized when passing in NULL for the service name. So we
can't really trust that anymore. I doubt non-default KDC ports
are an issues so just drop the port from the generated krb5.conf.
AIX exhibits this bug the most.
diff --git a/source/lib/util_sock.c b/source/lib/util_sock.c
index 6562513..2a6ad1a 100644
--- a/source/lib/util_sock.c
+++ b/source/lib/util_sock.c
@@ -108,9 +108,13 @@ static bool interpret_string_addr_internal(struct addrinfo **ppres,
hints.ai_socktype = SOCK_STREAM;
hints.ai_flags = flags;
+ /* Linux man page on getaddinfo() says port will be
+ uninitialized when service string in NULL */
+
ret = getaddrinfo(str, NULL,
&hints,
ppres);
+
if (ret) {
DEBUG(3,("interpret_string_addr_internal: getaddrinfo failed "
"for name %s [%s]\n",
@@ -541,50 +545,22 @@ char *print_canonical_sockaddr(TALLOC_CTX *ctx,
char *dest = NULL;
int ret;
+ /* Linux getnameinfo() man pages says port is unitialized if
+ service name is NULL. */
+
ret = sys_getnameinfo((const struct sockaddr *)pss,
sizeof(struct sockaddr_storage),
addr, sizeof(addr),
NULL, 0,
NI_NUMERICHOST);
- if (ret) {
+ if (ret != 0) {
return NULL;
}
- if (pss->ss_family != AF_INET) {
#if defined(HAVE_IPV6)
- /* IPv6 */
- const struct sockaddr_in6 *sa6 =
- (const struct sockaddr_in6 *)pss;
- uint16_t port = ntohs(sa6->sin6_port);
-
- if (port) {
- dest = talloc_asprintf(ctx,
- "[%s]:%d",
- addr,
- (unsigned int)port);
- } else {
- dest = talloc_asprintf(ctx,
- "[%s]",
- addr);
- }
+ dest = talloc_asprintf(ctx, "[%s]", addr);
#else
- return NULL;
+ dest = talloc_asprintf(ctx, "%s", addr);
#endif
- } else {
- const struct sockaddr_in *sa =
- (const struct sockaddr_in *)pss;
- uint16_t port = ntohs(sa->sin_port);
-
- if (port) {
- dest = talloc_asprintf(ctx,
- "%s:%d",
- addr,
- (unsigned int)port);
- } else {
- dest = talloc_asprintf(ctx,
- "%s",
- addr);
- }
- }
return dest;
}
--
1.5.3.4
More information about the samba-technical
mailing list