From 8e71aeb4c1ed10442a36d861250c23f2c3d89ce9 Mon Sep 17 00:00:00 2001 From: Matthias Andree Date: Wed, 28 Jun 2006 09:47:43 +0000 Subject: * When looking up ports for a service, the lookup succeeds and the returned address family isn't IPv4 or IPv6, properly free the allocated memory from the service lookup. Found by Uli Zappe. * When looking up ports for a service, only look up TCP ports. svn path=/branches/BRANCH_6-3/; revision=4855 --- servport.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'servport.c') diff --git a/servport.c b/servport.c index 01b84607..2849f7c2 100644 --- a/servport.c +++ b/servport.c @@ -1,6 +1,6 @@ /** \file servport.c Resolve service name to port number. * \author Matthias Andree - * \date 2005 + * \date 2005 - 2006 * * Copyright (C) 2005 by Matthias Andree * For license terms, see the file COPYING in this directory. @@ -47,6 +47,7 @@ int servport(const char *service) { memset(&hints, 0, sizeof hints); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; + hints.ai_protocol = IPPROTO_TCP; e = getaddrinfo(NULL, service, &hints, &res); if (e) { report(stderr, GT_("getaddrinfo(NULL, \"%s\") error: %s\n"), @@ -63,6 +64,7 @@ int servport(const char *service) { break; #endif default: + freeaddrinfo(res); goto err; } freeaddrinfo(res); -- cgit v1.2.3