OK to patch curl to fix no_proxy?

https://github.com/curl/curl/issues/9821

Index: Makefile
===================================================================
RCS file: /cvs/ports/net/curl/Makefile,v
retrieving revision 1.174
diff -u -p -r1.174 Makefile
--- Makefile    28 Oct 2022 17:59:06 -0000      1.174
+++ Makefile    2 Nov 2022 02:47:01 -0000
@@ -1,6 +1,7 @@
 COMMENT=       transfer files with FTP, HTTP, HTTPS, etc.
 
 DISTNAME=      curl-7.86.0
+REVISION=      0
 SHARED_LIBS=   curl                 26.17    # 12.0
 CATEGORIES=    net
 HOMEPAGE=      https://curl.se/
Index: patches/patch-lib_noproxy_c
===================================================================
RCS file: patches/patch-lib_noproxy_c
diff -N patches/patch-lib_noproxy_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-lib_noproxy_c 2 Nov 2022 02:47:01 -0000
@@ -0,0 +1,54 @@
+From b830f9ba9e94acf672cd191993ff679fa888838b Mon Sep 17 00:00:00 2001
+From: Daniel Stenberg <dan...@haxx.se>
+Date: Fri, 28 Oct 2022 10:51:49 +0200
+Subject: [PATCH] noproxy: fix tail-matching
+
+Index: lib/noproxy.c
+--- lib/noproxy.c.orig
++++ lib/noproxy.c
+@@ -149,9 +149,14 @@ bool Curl_check_noproxy(const char *name, const char *
+     }
+     else {
+       unsigned int address;
++      namelen = strlen(name);
+       if(1 == Curl_inet_pton(AF_INET, name, &address))
+         type = TYPE_IPV4;
+-      namelen = strlen(name);
++      else {
++        /* ignore trailing dots in the host name */
++        if(name[namelen - 1] == '.')
++          namelen--;
++      }
+     }
+ 
+     while(*p) {
+@@ -173,12 +178,23 @@ bool Curl_check_noproxy(const char *name, const char *
+       if(tokenlen) {
+         switch(type) {
+         case TYPE_HOST:
+-          if(*token == '.') {
+-            ++token;
+-            --tokenlen;
+-            /* tailmatch */
+-            match = (tokenlen <= namelen) &&
+-              strncasecompare(token, name + (namelen - tokenlen), namelen);
++          /* ignore trailing dots in the token to check */
++          if(token[tokenlen - 1] == '.')
++            tokenlen--;
++
++          if(tokenlen && (*token == '.')) {
++            /* A: example.com matches '.example.com'
++               B: www.example.com matches '.example.com'
++               C: nonexample.com DOES NOT match '.example.com'
++            */
++            if((tokenlen - 1) == namelen)
++              /* case A, exact match without leading dot */
++              match = strncasecompare(token + 1, name, namelen);
++            else if(tokenlen < namelen)
++              /* case B, tailmatch with leading dot */
++              match = strncasecompare(token, name + (namelen - tokenlen),
++                                      tokenlen);
++            /* case C passes through, not a match */
+           }
+           else
+             match = (tokenlen == namelen) &&
Index: patches/patch-m4_curl-compilers_m4
===================================================================
RCS file: /cvs/ports/net/curl/patches/patch-m4_curl-compilers_m4,v
retrieving revision 1.5
diff -u -p -r1.5 patch-m4_curl-compilers_m4
--- patches/patch-m4_curl-compilers_m4  30 Jun 2022 18:11:25 -0000      1.5
+++ patches/patch-m4_curl-compilers_m4  2 Nov 2022 02:47:01 -0000
@@ -9,7 +9,7 @@ Do not override optimization flags in CF
 Index: m4/curl-compilers.m4
 --- m4/curl-compilers.m4.orig
 +++ m4/curl-compilers.m4
-@@ -693,7 +693,7 @@ AC_DEFUN([CURL_SET_COMPILER_OPTIMIZE_OPTS], [
+@@ -695,7 +695,7 @@ AC_DEFUN([CURL_SET_COMPILER_OPTIMIZE_OPTS], [
      tmp_options=""
      tmp_CFLAGS="$CFLAGS"
      tmp_CPPFLAGS="$CPPFLAGS"

Reply via email to