Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Aug 2017 18:20:36 +0000 (UTC)
From:      =?UTF-8?Q?Dag-Erling_Sm=c3=b8rgrav?= <des@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r322669 - head/lib/libfetch
Message-ID:  <201708181820.v7IIKaFv061066@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: des
Date: Fri Aug 18 18:20:36 2017
New Revision: 322669
URL: https://svnweb.freebsd.org/changeset/base/322669

Log:
  In fetch_resolve(), if the port number or service name is included in
  the host argument (e.g. "www.freebsd.org:443"), the service pointer,
  which is supposed to point to the port or service part, instead points
  to the separator, causing getaddrinfo() to fail.
  
  Note that I have not been able to trigger this bug with fetch(1), nor
  do I believe it is possible, as libfetch always parses the host:port
  specification itself.  I discovered it when I copied fetch_resolve()
  into an unrelated project.
  
  MFC after:	3 days

Modified:
  head/lib/libfetch/common.c

Modified: head/lib/libfetch/common.c
==============================================================================
--- head/lib/libfetch/common.c	Fri Aug 18 17:32:14 2017	(r322668)
+++ head/lib/libfetch/common.c	Fri Aug 18 18:20:36 2017	(r322669)
@@ -291,7 +291,7 @@ fetch_resolve(const char *addr, int port, int af)
 			goto syserr;
 		service = sbuf;
 	} else if (*sep != '\0') {
-		service = sep;
+		service = sep + 1;
 	} else {
 		service = NULL;
 	}



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201708181820.v7IIKaFv061066>