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))
openSUSE Build Service is sponsored by