[newlib-cygwin] Cygwin: resolver: Process options forward (not backwards)

Corinna Vinschen corinna@sourceware.org
Wed Jan 19 07:55:32 GMT 2022


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=fa279a583dd961497a378758ebbe4ca78f085282

commit fa279a583dd961497a378758ebbe4ca78f085282
Author: Anton Lavrentiev via Cygwin-patches <cygwin-patches@cygwin.com>
Date:   Tue Jan 18 11:09:33 2022 -0500

    Cygwin: resolver: Process options forward (not backwards)
    
    Also, make sure the debug setting propagates to the parser of
    the remainder of /etc/resolv.conf

Diff:
---
 winsup/cygwin/libc/minires.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/winsup/cygwin/libc/minires.c b/winsup/cygwin/libc/minires.c
index 0cf9efd9b..fdc6087f5 100644
--- a/winsup/cygwin/libc/minires.c
+++ b/winsup/cygwin/libc/minires.c
@@ -86,12 +86,12 @@ Read options
 
 
 ***********************************************************************/
-static void get_options(res_state statp, int i, char **words)
+static void get_options(res_state statp, int n, char **words)
 {
   char *ptr;
-  int value;
+  int i, value;
 
-  while (i-- > 0) {
+  for (i = 0;  i < n;  ++i) {
     if (!strcasecmp("debug", words[i])) {
       statp->options |= RES_DEBUG;
       DPRINTF(statp->options & RES_DEBUG, "%s: 1\n", words[i]);
@@ -208,8 +208,10 @@ static void get_resolv(res_state statp)
 	}
       }
       /* Options line */
-      else if (!strncasecmp("options", words[0], sizes[0]))
+      else if (!strncasecmp("options", words[0], sizes[0])) {
 	get_options(statp, i - 1, &words[1]);
+	debug = statp->options & RES_DEBUG;
+      }
     }
   }
   fclose(fd);


More information about the Cygwin-cvs mailing list