File cares-1.9.1-ocloexec.patch of Package libcares2
diff --git a/ares_gethostbyaddr.c b/ares_gethostbyaddr.c
index 4b4c8a7..6896a91 100644
--- a/ares_gethostbyaddr.c
+++ b/ares_gethostbyaddr.c
@@ -222,7 +222,7 @@ static int file_lookup(struct ares_addr *addr, struct hostent **host)
return ARES_ENOTFOUND;
#endif
- fp = fopen(PATH_HOSTS, "r");
+ fp = fopen(PATH_HOSTS, "re");
if (!fp)
{
error = ERRNO;
diff --git a/ares_gethostbyname.c b/ares_gethostbyname.c
index 4869402..bfc54b6 100644
--- a/ares_gethostbyname.c
+++ b/ares_gethostbyname.c
@@ -380,7 +380,7 @@ static int file_lookup(const char *name, int family, struct hostent **host)
return ARES_ENOTFOUND;
#endif
- fp = fopen(PATH_HOSTS, "r");
+ fp = fopen(PATH_HOSTS, "re");
if (!fp)
{
error = ERRNO;
diff --git a/ares_init.c b/ares_init.c
index 0c1d545..b9b9508 100644
--- a/ares_init.c
+++ b/ares_init.c
@@ -1173,7 +1173,7 @@
if (ARES_CONFIG_CHECK(channel))
return ARES_SUCCESS;
- fp = fopen(PATH_RESOLV_CONF, "r");
+ fp = fopen(PATH_RESOLV_CONF, "re");
if (fp) {
while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
{
@@ -1215,7 +1215,7 @@
if ((status == ARES_EOF) && (!channel->lookups)) {
/* Many systems (Solaris, Linux, BSD's) use nsswitch.conf */
- fp = fopen("/etc/nsswitch.conf", "r");
+ fp = fopen("/etc/nsswitch.conf", "re");
if (fp) {
while ((status = ares__read_line(fp, &line, &linesize)) ==
ARES_SUCCESS)
@@ -1245,7 +1245,7 @@
if ((status == ARES_EOF) && (!channel->lookups)) {
/* Linux / GNU libc 2.x and possibly others have host.conf */
- fp = fopen("/etc/host.conf", "r");
+ fp = fopen("/etc/host.conf", "re");
if (fp) {
while ((status = ares__read_line(fp, &line, &linesize)) ==
ARES_SUCCESS)
@@ -1275,7 +1275,7 @@
if ((status == ARES_EOF) && (!channel->lookups)) {
/* Tru64 uses /etc/svc.conf */
- fp = fopen("/etc/svc.conf", "r");
+ fp = fopen("/etc/svc.conf", "re");
if (fp) {
while ((status = ares__read_line(fp, &line, &linesize)) ==
ARES_SUCCESS)
@@ -1908,7 +1908,7 @@
}
#else /* !WIN32 */
#ifdef RANDOM_FILE
- FILE *f = fopen(RANDOM_FILE, "rb");
+ FILE *f = fopen(RANDOM_FILE, "rbe");
if(f) {
counter = aresx_uztosi(fread(key, 1, key_data_len, f));
fclose(f);
diff --git a/ares_process.c b/ares_process.c
index 5de1ae6..1b85640 100644
--- a/ares_process.c
+++ b/ares_process.c
@@ -877,7 +877,7 @@
setsocknonblock(s, TRUE);
-#if defined(FD_CLOEXEC) && !defined(MSDOS)
+#if !defined(SOCK_CLOEXEC) && defined(FD_CLOEXEC) && !defined(MSDOS)
/* Configure the socket fd as close-on-exec. */
if (fcntl(s, F_SETFD, FD_CLOEXEC) == -1)
return -1;
@@ -964,7 +964,7 @@
}
/* Acquire a socket. */
- s = socket(server->addr.family, SOCK_STREAM, 0);
+ s = socket(server->addr.family, SOCK_STREAM | SOCK_CLOEXEC, 0);
if (s == ARES_SOCKET_BAD)
return -1;
@@ -1056,7 +1056,7 @@
}
/* Acquire a socket. */
- s = socket(server->addr.family, SOCK_DGRAM, 0);
+ s = socket(server->addr.family, SOCK_DGRAM | SOCK_CLOEXEC, 0);
if (s == ARES_SOCKET_BAD)
return -1;
diff --git a/ares_search.c b/ares_search.c
index 1877c19..387a16f 100644
--- a/ares_search.c
+++ b/ares_search.c
@@ -256,7 +256,7 @@ static int single_domain(ares_channel channel, const char *name, char **s)
hostaliases = getenv("HOSTALIASES");
if (hostaliases)
{
- fp = fopen(hostaliases, "r");
+ fp = fopen(hostaliases, "re");
if (fp)
{
while ((status = ares__read_line(fp, &line, &linesize))