From patchwork Tue Apr 18 18:40:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Florian Weimer X-Patchwork-Id: 751927 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3w6v922V5yz9s03 for ; Wed, 19 Apr 2017 04:41:10 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=sourceware.org header.i=@sourceware.org header.b="yYXzV9WV"; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:to:subject:mime-version:content-type :content-transfer-encoding:message-id:from; q=dns; s=default; b= dNhExvhXMYaege1OI24rbuTuZX7ueDTu17RkugbvZQzAqEf90GHECl7IQsVq+eCR PnFDWUQoWjTZzfF3JN/Oz2rn7lONuQCyPkdIAOGDNV+nMIFSbRIGIgq3moEQYcl5 o2Q8AaCtXNMaCppeR4MPgMxLeJGtyNfocmjVr6lKs7U= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=sourceware.org; h=list-id :list-unsubscribe:list-subscribe:list-archive:list-post :list-help:sender:date:to:subject:mime-version:content-type :content-transfer-encoding:message-id:from; s=default; bh=WNRBwZ YRnH0d6rW+3upgbWOANbA=; b=yYXzV9WVQ5y/d3bGBFyyv0OOpufRHhy6bhIF8W q3Y8vAk+0v6BK6AMAXpSaKQFXX7+MdxwcdL/srn+ReTZV8jUFaltH/FU+xGyI5qc /Y5gIREzS1xCzkObYhO/lS2Bkd81xwkMvVl0Eu6iPQxSmWVvfhWRzq5S1XC1B9G8 LbH40= Received: (qmail 49487 invoked by alias); 18 Apr 2017 18:41:02 -0000 Mailing-List: contact libc-alpha-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libc-alpha-owner@sourceware.org Delivered-To: mailing list libc-alpha@sourceware.org Received: (qmail 47328 invoked by uid 89); 18 Apr 2017 18:41:00 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RP_MATCHES_RCVD, SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=RPC, getaddrinfo, family X-HELO: mx1.redhat.com DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 5974019D38F Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx05.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=fweimer@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 5974019D38F Date: Tue, 18 Apr 2017 20:40:57 +0200 To: libc-alpha@sourceware.org Subject: [PATCH] Create more sockets with SOCK_CLOEXEC [BZ #15722] User-Agent: Heirloom mailx 12.5 7/5/10 MIME-Version: 1.0 Message-Id: <20170418184058.04B574126BF74@oldenburg.str.redhat.com> From: fweimer@redhat.com (Florian Weimer) 2017-04-18 Florian Weimer [BZ #15722] * resolv/res_hconf.c (_res_hconf_reorder_addrs): Create socket with SOCK_CLOEXEC. * resolv/res_send.c (send_vc, reopen): Likewise. * sysdeps/posix/getaddrinfo.c (getaddrinfo): Likewise. * sysdeps/unix/sysv/linux/check_native.c (__check_native): Likewise. * sysdeps/unix/sysv/linux/ifaddrs.c (__netlink_open): Likewise. * inet/rexec.c (rexec_af): Add comment. * inet/rcmd.c (rresvport_af): Likewise. diff --git a/inet/rcmd.c b/inet/rcmd.c index b7cc7a8..e43d4af 100644 --- a/inet/rcmd.c +++ b/inet/rcmd.c @@ -383,6 +383,7 @@ rresvport_af (int *alport, sa_family_t family) __set_errno (EAFNOSUPPORT); return -1; } + /* NB: No SOCK_CLOXEC for backwards compatibility. */ s = __socket(family, SOCK_STREAM, 0); if (s < 0) return -1; diff --git a/inet/rexec.c b/inet/rexec.c index 43fb67b..82e15ae 100644 --- a/inet/rexec.c +++ b/inet/rexec.c @@ -86,6 +86,7 @@ rexec_af (char **ahost, int rport, const char *name, const char *pass, } ruserpass(res0->ai_canonname, &name, &pass); retry: + /* NB: No SOCK_CLOXEC for backwards compatibility. */ s = __socket(res0->ai_family, res0->ai_socktype, 0); if (s < 0) { perror("rexec: socket"); diff --git a/nis/nis_findserv.c b/nis/nis_findserv.c index 77f3c7c..8e01164 100644 --- a/nis/nis_findserv.c +++ b/nis/nis_findserv.c @@ -142,7 +142,7 @@ __nis_findfastest_with_timeout (dir_binding *bind, } /* Create RPC handle */ - sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP); + sock = socket (AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, IPPROTO_UDP); clnt = clntudp_create (&saved_sin, NIS_PROG, NIS_VERSION, *timeout, &sock); if (clnt == NULL) { diff --git a/resolv/res_hconf.c b/resolv/res_hconf.c index d0d116d..8fc06e9 100644 --- a/resolv/res_hconf.c +++ b/resolv/res_hconf.c @@ -388,7 +388,7 @@ _res_hconf_reorder_addrs (struct hostent *hp) /* Initialize interface table. */ /* The SIOCGIFNETMASK ioctl will only work on an AF_INET socket. */ - sd = __socket (AF_INET, SOCK_DGRAM, 0); + sd = __socket (AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0); if (sd < 0) return; diff --git a/resolv/res_send.c b/resolv/res_send.c index ffb9a6a..3de0b3e 100644 --- a/resolv/res_send.c +++ b/resolv/res_send.c @@ -692,7 +692,8 @@ send_vc(res_state statp, if (statp->_vcsock >= 0) __res_iclose(statp, false); - statp->_vcsock = socket(nsap->sa_family, SOCK_STREAM, 0); + statp->_vcsock = socket + (nsap->sa_family, SOCK_STREAM | SOCK_CLOEXEC, 0); if (statp->_vcsock < 0) { *terrno = errno; Perror(statp, stderr, "socket(vc)", errno); @@ -902,14 +903,16 @@ reopen (res_state statp, int *terrno, int ns) /* only try IPv6 if IPv6 NS and if not failed before */ if (nsap->sa_family == AF_INET6 && !statp->ipv6_unavail) { - EXT(statp).nssocks[ns] - = socket(PF_INET6, SOCK_DGRAM|SOCK_NONBLOCK, 0); + EXT(statp).nssocks[ns] = socket + (PF_INET6, + SOCK_DGRAM | SOCK_NONBLOCK | SOCK_CLOEXEC, 0); if (EXT(statp).nssocks[ns] < 0) statp->ipv6_unavail = errno == EAFNOSUPPORT; slen = sizeof (struct sockaddr_in6); } else if (nsap->sa_family == AF_INET) { - EXT(statp).nssocks[ns] - = socket(PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, 0); + EXT(statp).nssocks[ns] = socket + (PF_INET, + SOCK_DGRAM | SOCK_NONBLOCK | SOCK_CLOEXEC, 0); slen = sizeof (struct sockaddr_in); } if (EXT(statp).nssocks[ns] < 0) { diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c index eed7264..a55cc39 100644 --- a/sysdeps/posix/getaddrinfo.c +++ b/sysdeps/posix/getaddrinfo.c @@ -2472,7 +2472,7 @@ getaddrinfo (const char *name, const char *service, close_retry: close_not_cancel_no_status (fd); af = q->ai_family; - fd = __socket (af, SOCK_DGRAM, IPPROTO_IP); + fd = __socket (af, SOCK_DGRAM | SOCK_CLOEXEC, IPPROTO_IP); } else { diff --git a/sysdeps/unix/sysv/linux/check_native.c b/sysdeps/unix/sysv/linux/check_native.c index 4a16460..7e5a7c9 100644 --- a/sysdeps/unix/sysv/linux/check_native.c +++ b/sysdeps/unix/sysv/linux/check_native.c @@ -41,7 +41,7 @@ void __check_native (uint32_t a1_index, int *a1_native, uint32_t a2_index, int *a2_native) { - int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); + int fd = __socket (PF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, NETLINK_ROUTE); struct sockaddr_nl nladdr; memset (&nladdr, '\0', sizeof (nladdr)); diff --git a/sysdeps/unix/sysv/linux/ifaddrs.c b/sysdeps/unix/sysv/linux/ifaddrs.c index cff12c2..3bc9902 100644 --- a/sysdeps/unix/sysv/linux/ifaddrs.c +++ b/sysdeps/unix/sysv/linux/ifaddrs.c @@ -255,7 +255,7 @@ __netlink_open (struct netlink_handle *h) { struct sockaddr_nl nladdr; - h->fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); + h->fd = __socket (PF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, NETLINK_ROUTE); if (h->fd < 0) goto out;