[arch-commits] Commit in curl/repos (4 files)

Christian Hesse eworm at gemini.archlinux.org
Tue Sep 21 07:27:11 UTC 2021


    Date: Tuesday, September 21, 2021 @ 07:27:11
  Author: eworm
Revision: 424454

archrelease: copy trunk to testing-x86_64

Added:
  curl/repos/testing-x86_64/
  curl/repos/testing-x86_64/0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch
    (from rev 424453, curl/trunk/0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch)
  curl/repos/testing-x86_64/0002-http-fix-the-broken-3-digit-response-code-detection.patch
    (from rev 424453, curl/trunk/0002-http-fix-the-broken-3-digit-response-code-detection.patch)
  curl/repos/testing-x86_64/PKGBUILD
    (from rev 424453, curl/trunk/PKGBUILD)

-----------------------------------------------------------------------------+
 0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch |   47 +++
 0002-http-fix-the-broken-3-digit-response-code-detection.patch              |  119 ++++++++++
 PKGBUILD                                                                    |   67 +++++
 3 files changed, 233 insertions(+)

Copied: curl/repos/testing-x86_64/0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch (from rev 424453, curl/trunk/0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch)
===================================================================
--- testing-x86_64/0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch	                        (rev 0)
+++ testing-x86_64/0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch	2021-09-21 07:27:11 UTC (rev 424454)
@@ -0,0 +1,47 @@
+From 901804ef95777b8e735a55b77f8dd630a58c575b Mon Sep 17 00:00:00 2001
+From: Daniel Stenberg <daniel at haxx.se>
+Date: Thu, 16 Sep 2021 08:50:54 +0200
+Subject: [PATCH] Curl_http2_setup: don't change connection data on repeat
+ invokes
+
+Regression from 3cb8a748670ab88c (releasde in 7.79.0). That change moved
+transfer oriented inits to before the check but also erroneously moved a
+few connection oriented ones, which causes problems.
+
+Reported-by: Evangelos Foutras
+Fixes #7730
+Closes #7731
+---
+ lib/http2.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/lib/http2.c b/lib/http2.c
+index a3de607c7d24..6d63f43636a5 100644
+--- a/lib/http2.c
++++ b/lib/http2.c
+@@ -2221,12 +2221,6 @@ CURLcode Curl_http2_setup(struct Curl_easy *data,
+   stream->mem = data->state.buffer;
+   stream->len = data->set.buffer_size;
+ 
+-  httpc->inbuflen = 0;
+-  httpc->nread_inbuf = 0;
+-
+-  httpc->pause_stream_id = 0;
+-  httpc->drain_total = 0;
+-
+   multi_connchanged(data->multi);
+   /* below this point only connection related inits are done, which only needs
+      to be done once per connection */
+@@ -2252,6 +2246,12 @@ CURLcode Curl_http2_setup(struct Curl_easy *data,
+   conn->httpversion = 20;
+   conn->bundle->multiuse = BUNDLE_MULTIPLEX;
+ 
++  httpc->inbuflen = 0;
++  httpc->nread_inbuf = 0;
++
++  httpc->pause_stream_id = 0;
++  httpc->drain_total = 0;
++
+   infof(data, "Connection state changed (HTTP/2 confirmed)");
+ 
+   return CURLE_OK;

Copied: curl/repos/testing-x86_64/0002-http-fix-the-broken-3-digit-response-code-detection.patch (from rev 424453, curl/trunk/0002-http-fix-the-broken-3-digit-response-code-detection.patch)
===================================================================
--- testing-x86_64/0002-http-fix-the-broken-3-digit-response-code-detection.patch	                        (rev 0)
+++ testing-x86_64/0002-http-fix-the-broken-3-digit-response-code-detection.patch	2021-09-21 07:27:11 UTC (rev 424454)
@@ -0,0 +1,119 @@
+From beb8990d934a01acf103871e463d4e61afc9ded2 Mon Sep 17 00:00:00 2001
+From: Daniel Stenberg <daniel at haxx.se>
+Date: Fri, 17 Sep 2021 16:31:25 +0200
+Subject: http: fix the broken >3 digit response code detection
+
+When the "reason phrase" in the HTTP status line starts with a digit,
+that was treated as the forth response code digit and curl would claim
+the response to be non-compliant.
+
+Added test 1466 to verify this case.
+
+Regression brought by 5dc594e44f73b17
+Reported-by: Glenn de boer
+Fixes #7738
+Closes #7739
+---
+ lib/http.c              | 10 +++++-----
+ tests/data/Makefile.inc |  2 +-
+ tests/data/test1466     | 45 +++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 51 insertions(+), 6 deletions(-)
+ create mode 100644 tests/data/test1466
+
+diff --git a/lib/http.c b/lib/http.c
+index d5c36dd54..648583c56 100644
+--- a/lib/http.c
++++ b/lib/http.c
+@@ -4232,9 +4232,9 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
+         char separator;
+         char twoorthree[2];
+         int httpversion = 0;
+-        int digit4 = -1; /* should remain untouched to be good */
++        char digit4 = 0;
+         nc = sscanf(HEADER1,
+-                    " HTTP/%1d.%1d%c%3d%1d",
++                    " HTTP/%1d.%1d%c%3d%c",
+                     &httpversion_major,
+                     &httpversion,
+                     &separator,
+@@ -4250,13 +4250,13 @@ CURLcode Curl_http_readwrite_headers(struct Curl_easy *data,
+ 
+         /* There can only be a 4th response code digit stored in 'digit4' if
+            all the other fields were parsed and stored first, so nc is 5 when
+-           digit4 is not -1 */
+-        else if(digit4 != -1) {
++           digit4 a digit */
++        else if(ISDIGIT(digit4)) {
+           failf(data, "Unsupported response code in HTTP response");
+           return CURLE_UNSUPPORTED_PROTOCOL;
+         }
+ 
+-        if((nc == 4) && (' ' == separator)) {
++        if((nc >= 4) && (' ' == separator)) {
+           httpversion += 10 * httpversion_major;
+           switch(httpversion) {
+           case 10:
+diff --git a/tests/data/Makefile.inc b/tests/data/Makefile.inc
+index 787c36375..91b8c18eb 100644
+--- a/tests/data/Makefile.inc
++++ b/tests/data/Makefile.inc
+@@ -182,7 +182,7 @@ test1432 test1433 test1434 test1435 test1436 test1437 test1438 test1439 \
+ test1440 test1441 test1442 test1443 test1444 test1445 test1446 test1447 \
+ test1448 test1449 test1450 test1451 test1452 test1453 test1454 test1455 \
+ test1456 test1457 test1458 test1459 test1460 test1461 test1462 test1463 \
+-test1464 test1465 \
++test1464 test1465 test1466 \
+ \
+ test1500 test1501 test1502 test1503 test1504 test1505 test1506 test1507 \
+ test1508 test1509 test1510 test1511 test1512 test1513 test1514 test1515 \
+diff --git a/tests/data/test1466 b/tests/data/test1466
+new file mode 100644
+index 000000000..0955d660c
+--- /dev/null
++++ b/tests/data/test1466
+@@ -0,0 +1,45 @@
++<testcase>
++<info>
++<keywords>
++HTTP
++HTTP GET
++</keywords>
++</info>
++
++<reply>
++<data>
++HTTP/1.1 405 405
++Content-Length: 6
++Connection: close
++
++-foo-
++</data>
++</reply>
++
++#
++# Client-side
++<client>
++<server>
++http
++</server>
++
++<name>
++HTTP GET with 3-digit response and only digits in reason
++ </name>
++ <command>
++http://%HOSTIP:%HTTPPORT/%TESTNUMBER
++</command>
++</client>
++
++#
++# Verify data after the test has been "shot"
++<verify>
++<protocol>
++GET /%TESTNUMBER HTTP/1.1
++Host: %HOSTIP:%HTTPPORT
++User-Agent: curl/%VERSION
++Accept: */*
++
++</protocol>
++</verify>
++</testcase>

Copied: curl/repos/testing-x86_64/PKGBUILD (from rev 424453, curl/trunk/PKGBUILD)
===================================================================
--- testing-x86_64/PKGBUILD	                        (rev 0)
+++ testing-x86_64/PKGBUILD	2021-09-21 07:27:11 UTC (rev 424454)
@@ -0,0 +1,67 @@
+# Maintainer: Dave Reisner <dreisner at archlinux.org>
+# Contributor: Angel Velasquez <angvp at archlinux.org>
+# Contributor: Eric Belanger <eric at archlinux.org>
+# Contributor: Lucien Immink <l.immink at student.fnt.hvu.nl>
+# Contributor: Daniel J Griffiths <ghost1227 at archlinux.us>
+
+pkgname=curl
+pkgver=7.79.0
+pkgrel=4
+pkgdesc='An URL retrieval utility and library'
+arch=('x86_64')
+url='https://curl.haxx.se'
+license=('MIT')
+depends=('ca-certificates' 'brotli' 'libbrotlidec.so' 'krb5' 'libgssapi_krb5.so'
+         'libidn2' 'libidn2.so' 'libnghttp2' 'libpsl' 'libpsl.so' 'libssh2' 'libssh2.so'
+         'openssl' 'zlib' 'zstd' 'libzstd.so')
+provides=('libcurl.so')
+source=("https://curl.haxx.se/download/${pkgname}-${pkgver}.tar.gz"{,.asc}
+        '0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch'
+        '0002-http-fix-the-broken-3-digit-response-code-detection.patch')
+sha512sums=('6529645774bd2687535cfaec5949281f305c2910da3bd4de22713ab370fde0d05c416579b46aef7eaaf5f73d882e96b8268b80b6802b978f9c54b0a837420dad'
+            'SKIP'
+            'f83ba83073a90ab369c7c0e06d440d6d8be87c72800095c35d803bca246ea5ee73b811b210ce9d8a7ee137583ca3e839afd8eb9accf699f655e9db82a7bdef71'
+            'e8448cea7f8ddc0cd5a6d632f6e8d537b82820f49ca91b17858802893eeaef4255a50aba9426870cdf9ee5c1cc121b977426313d42a0c0be12e9ea237ff0201f')
+validpgpkeys=('27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2') # Daniel Stenberg
+
+prepare() {
+  cd "${pkgname}-${pkgver}"
+
+  patch -Np1 < ../0001-Curl_http2_setup-do-not-change-connection-data-on-repeat-invokes.patch
+  patch -Np1 < ../0002-http-fix-the-broken-3-digit-response-code-detection.patch
+}
+
+build() {
+  mkdir build
+  cd build
+
+  "${srcdir}/${pkgname}-${pkgver}"/configure \
+    --prefix='/usr' \
+    --mandir='/usr/share/man' \
+    --disable-ldap \
+    --disable-ldaps \
+    --disable-manual \
+    --enable-ipv6 \
+    --enable-versioned-symbols \
+    --enable-threaded-resolver \
+    --with-gssapi \
+    --with-libssh2 \
+    --with-openssl \
+    --with-random='/dev/urandom' \
+    --with-ca-bundle='/etc/ssl/certs/ca-certificates.crt'
+
+  sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
+  make
+}
+
+package() {
+  cd build
+
+  make DESTDIR="${pkgdir}" install
+  make DESTDIR="${pkgdir}" install -C scripts
+
+  cd "${srcdir}/${pkgname}-${pkgver}"
+
+  # license
+  install -Dt "${pkgdir}/usr/share/licenses/$pkgname" -m0644 COPYING
+}



More information about the arch-commits mailing list