Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) by nld3-dev1.alpinelinux.org (Postfix) with ESMTPS id D44B5782C03 for <~alpine/users@lists.alpinelinux.org>; Thu, 21 May 2020 20:11:12 +0000 (UTC) Received: by mail-wr1-f50.google.com with SMTP id l17so7928228wrr.4 for <~alpine/users@lists.alpinelinux.org>; Thu, 21 May 2020 13:11:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to :content-transfer-encoding; bh=Q2Dm4bRyqN5vyedn8AGMA0KYWb27BcXcscREEBy2CHs=; b=dY4Yvbqw6XEFV565maHeH/xwEqVWs5g6j8f5L2BlUmnGB5M70JalfL9DKTlSiy7p18 noO4MSfV0NiA6Z5hmwMDRAFMJoJXBt/eux3SWBRCBYyFMommIhhVWlj6M/NKozm+SVIt DWM+2kZiawqrL40joBO0Di4hM/CIiKfKaoak4YQsLiwPXRbTmMcIRWewWfjbvwo8Ehg5 OsH8XijYsCY11kCVTqd1ygOweEpMrPqESjg4R/+VN+zv3douLgVZ3lpLmwDUQS4JqXjJ rc/8ECGNxx193GYh6irv4J2i1JGe6M82qpq/nyRN6ilf25uER7KnqU60jfWYSlul7XIu GMfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to :content-transfer-encoding; bh=Q2Dm4bRyqN5vyedn8AGMA0KYWb27BcXcscREEBy2CHs=; b=GNV4gNht4OciStAH8uW9ZVSd1KsylFSnCxK/DMgYebYykrxN3nHYC1TBgR0bcrhdUw SXLLmXvfnJvt6PAb2YbfwVgW2257TKJJAG9aZeaGaTY+XbfmOwMWHOZF1hMfHmSG4gZl ENGev00VcMMkoUv4oymdliv8ALQ5DYEBjPf+N1LssSMVQsL9QXeLIpWdSXhXoLHcYnYM 9xaCMbF7uDbr5nYf5VGH2U/GA2xA2B49Npyp8uMl3W9/aLMghmQ1S33BqDfbtLe+AQl1 eUGdvVUH02dIXLOODZKjgKehy9qOtrgHqC5PLaWGo9KVKBaffJ3+8MdaQyrwlx4X9mU7 jGfQ== X-Gm-Message-State: AOAM530cs+hCrXzWvFFKkIbNUiTY+5mkBIA7fXvmgxTZHu7dBE0P8ERg ECat6FJqP55v9ojiSjY+RQYhvIlRVCb5fuwAN5LKF0kd X-Google-Smtp-Source: ABdhPJzd0Ds6GjONostCY1t5UUrHb2Q2h3S3LiaO9OcoHffbdm92HxH5ecfDzhlNORGDqpYUXADzW/cUXdD8OJvlVh4= X-Received: by 2002:adf:a298:: with SMTP id s24mr260824wra.184.1590091871872; Thu, 21 May 2020 13:11:11 -0700 (PDT) MIME-Version: 1.0 From: Axel U Date: Thu, 21 May 2020 16:11:00 -0400 Message-ID: Subject: curl large header issue https To: ~alpine/users@lists.alpinelinux.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable If someone could follow steps below to confirm what I am seeing, I would appreciate it, to exclude something wrong with my setup. Environment Alpine 3.11 $ curl --version curl 7.67.0 (x86_64-alpine-linux-musl) libcurl/7.67.0 OpenSSL/1.1.1g zlib/1.2.11 nghttp2/1.40.0 .. This is not a discussion that servers should reject large headers for security reasons or similar. I found the issue originally when running an existing set of test scripts that check server behavior for http1.1 requests with large headers. When running those test scripts on an Alpine host, curl reports an empty server response error (52), but the request with curl succeeds on another distro against the same server. Also, wget on Alpine has no issue with essentially the same request against the same server. So the test scripts in question would have to be adapted when running them on an Alpine host to use wget instead of curl, but before doing so, it smells like a curl issue on Alpine, so if someone could confirm, I would appreciate it, to exclude something wrong with my setup. I tried it on two Alpine hosts I have access to with the same result. I tried the same on another distro and don=E2=80=99t have the issue= . Note: Below steps are only set to http 0.9 because of ncat, as I tried to come up with the easiest setup to reproduce using standard tools and one line commands. So if you find or already run or want to setup a http/https server that accepts large header sizes to test this against and echos it back, then run this for http1.1 (to get error 52). This occurs on https only. Steps to reproduce on the host we need curl, wget (to replace BusyBox=E2=80=99s wget implementation), findutils (to replace BusyBox=E2=80=99s xargs implementation), nmap-ncat and perl In Step 2 below change the multiplier (example has it as 2000) to vary the header size; for me up to 1600 success, 1700+ error. We need two terminals open: terminal one and terminal two Step 1 in terminal one (server side): $ ncat -lvp 48443 --ssl -c 'xargs -n1 echo' Step 2 in terminal two (client side): $ perl -e '$b=3D`curl --insecure --http0.9 --silent --show-error -H foo:@{["0123456789"x2000]} -H zzz:here https://127.0.0.1:48443/`;print $b;' Step 3 in terminal one: Press Ctrl-C Step 4 in terminal two: Observe the output - reports an error. Repeat above using wget instead of curl in Step 2 in terminal two =3D no is= sue: $ perl -e '$b=3D`wget --no-check-certificate -O - --header=3D"foo:@{["0123456789"x2000]}" --header=3D"zzz:here" https://127.0.0.1:48443/`;print $b;' Repeat above with curl against http server =3D no issue: Step 1 in terminal one (server side): $ ncat -lvp 48080 -c 'xargs -n1 echo' Step 2 in terminal two (client side): $ perl -e '$b=3D`curl --silent --http0.9 --show-error -H foo:@{["0123456789"x2000]} -H zzz:here http://127.0.0.1:48080/`;print $b;' Step 3 and 4 as above. Repeat original steps unchanged (curl/https) on another distro that has same tools installed =3D no issue.