CVE-2024-24791
High · 7.5CVSS
7.5
EPSS
1.4%
Published
Jul 2, 2024
CISA due date
—
Cloudanix analysis
A flaw in a common software component used for building web services could allow an attacker to disrupt service and make the application unavailable to users.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The vulnerability resides in Go's net/http HTTP/1.1 client, which improperly handles server responses to requests containing an 'Expect: 100-continue' header. If a server responds with a final status code (e.g., 200 OK) instead of the expected '100 Continue' informational response, the client connection is left in a corrupted, unusable state. The next request sent over this persistent connection will fail, leading to connection state desynchronization.
Why it matters to the business
This flaw can be exploited to cause a denial of service (DoS) against applications that use Go's reverse proxy functionality. An attacker can effectively poison the connection pool of a reverse proxy, causing subsequent legitimate user requests to fail. This leads to service degradation or complete unavailability, impacting user experience, damaging brand reputation, and potentially causing financial loss for services that rely on high availability.
How an attack unfolds
An unauthenticated remote attacker targets a public-facing Go application acting as a reverse proxy (using net/http/httputil.ReverseProxy). The attacker sends a specially crafted HTTP request with the header 'Expect: 100-continue'. The proxy forwards this to a backend service. If the backend responds with any status other than '100 Continue', the proxy's connection handling logic fails, leaving the connection in an invalid state but returning it to the pool. The next legitimate user whose request is assigned this poisoned connection will experience an error. By repeating this process, the attacker can exhaust the pool of valid connections, denying service to all users.
How to fix it
The vulnerability is addressed in Go versions 1.22.5 and 1.21.12. To remediate, developers must recompile affected applications using a patched version of the Go toolchain and deploy the resulting updated binaries. There is no known workaround; upgrading the Go version used for the build is the only effective mitigation.
How to confirm the fix worked
To validate the fix, verify that all relevant Go applications have been rebuilt with Go version 1.22.5, 1.21.12, or a newer version. Check build logs, CI/CD pipeline configurations, and deployed binary metadata to confirm the use of a patched toolchain. To test for exposure, a security team can run a controlled test against a non-production environment by sending a request with 'Expect: 100-continue' that elicits a non-100 response, and then verifying that subsequent requests on the same connection succeed as expected.
Typical attack path
- An attacker identifies a target application built with Go that acts as a reverse proxy.
- The attacker sends an HTTP request to the proxy that includes the 'Expect: 100-continue' header.
- The proxy forwards the request to its backend service.
- The backend service responds with a final status code (e.g., 200 OK, 404 Not Found) instead of '100 Continue'.
- The proxy mishandles this response, corrupting the state of the underlying TCP connection.
- The corrupted connection is returned to the proxy's connection pool for reuse.
- A legitimate user's request is routed over the corrupted connection and fails.
- The attacker repeats the process, poisoning more connections and escalating the denial of service.
How to detect it
Monitor logs from Go-based reverse proxies and load balancers for an unusual increase in connection errors, dropped connections, or HTTP 5xx error codes. An attack may be in progress if you observe incoming requests containing the 'Expect: 100-continue' header that are correlated with subsequent, unrelated request failures. Correlating proxy and backend application logs can help identify instances where a non-100 response to a request with an 'Expect' header is followed by connection errors.
- "Expect: 100-continue"
What your security team should do
- Identify all Go applications in your environment, particularly public-facing reverse proxies, API gateways, and load balancers, as they are the primary targets.
- Use a Software Bill of Materials (SBOM) or dependency scanner to find all applications built with vulnerable Go versions (prior to 1.22.5 and 1.21.12).
- Prioritize patching for internet-exposed services and critical internal proxies to prevent service disruption.
- Engage with development teams to ensure they upgrade their Go toolchain and redeploy all affected applications.
The record
The net/http HTTP/1.1 client mishandled the case where a server responds to a request with an "Expect: 100-continue" header with a non-informational (200 or higher) status. This mishandling could leave a client connection in an invalid state, where the next request sent on the connection will fail. An attacker sending a request to a net/http/httputil.ReverseProxy proxy can exploit this mishandling to cause a denial of service by sending "Expect: 100-continue" requests which elicit a non-informational response from the backend. Each such request leaves the proxy with an invalid connection, and causes one subsequent request using that connection to fail.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Go | stdlib | 0 | 1.21.12 |
| AlmaLinux:8 | aardvark-dns | 0 | 2:1.10.0-1.module_el8.10.0+3792+03eaed9c |
| AlmaLinux:8 | aardvark-dns | 0 | 2:1.10.0-1.module_el8.10.0+3858+6ad51f9f |
| AlmaLinux:8 | aardvark-dns | 0 | 2:1.10.0-1.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | buildah | 0 | 2:1.33.8-4.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | buildah-tests | 0 | 2:1.33.8-4.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | cockpit-podman | 0 | 84.1-1.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | conmon | 0 | 3:2.1.10-1.module_el8.10.0+3845+87b84552 |
| AlmaLinux:8 | conmon | 0 | 3:2.1.10-1.module_el8.10.0+3858+6ad51f9f |
| AlmaLinux:8 | conmon | 0 | 3:2.1.10-1.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | container-selinux | 0 | 2:2.229.0-2.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | containernetworking-plugins | 0 | 1:1.4.0-5.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | containers-common | 0 | 2:1-82.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | crit | 0 | 3.18-5.module_el8.10.0+3845+87b84552 |
| AlmaLinux:8 | crit | 0 | 3.18-5.module_el8.10.0+3858+6ad51f9f |
| AlmaLinux:8 | crit | 0 | 3.18-5.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | criu | 0 | 3.18-5.module_el8.10.0+3845+87b84552 |
| AlmaLinux:8 | criu | 0 | 3.18-5.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | criu-devel | 0 | 3.18-5.module_el8.10.0+3858+6ad51f9f |
| AlmaLinux:8 | criu-devel | 0 | 3.18-5.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | criu-libs | 0 | 3.18-5.module_el8.10.0+3845+87b84552 |
| AlmaLinux:8 | criu-libs | 0 | 3.18-5.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | crun | 0 | 1.14.3-2.module_el8.10.0+3858+6ad51f9f |
| AlmaLinux:8 | crun | 0 | 1.14.3-2.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | delve | 0 | 1.21.2-4.module_el8.10.0+3895+92d465e0 |
| AlmaLinux:8 | fuse-overlayfs | 0 | 1.13-1.module_el8.10.0+3792+03eaed9c |
| AlmaLinux:8 | fuse-overlayfs | 0 | 1.13-1.module_el8.10.0+3859+6ae70a0e |
| AlmaLinux:8 | go-toolset | 0 | 1.21.13-1.module_el8.10.0+3895+92d465e0 |
| AlmaLinux:8 | golang | 0 | 1.21.13-2.module_el8.10.0+3895+92d465e0 |
| AlmaLinux:8 | golang-bin | 0 | 1.21.13-2.module_el8.10.0+3895+92d465e0 |
| AlmaLinux:8 | golang-docs | 0 | 1.21.13-2.module_el8.10.0+3895+92d465e0 |
| AlmaLinux:8 | golang-misc | 0 | 1.21.13-2.module_el8.10.0+3895+92d465e0 |
| AlmaLinux:8 | golang-src | 0 | 1.21.13-2.module_el8.10.0+3895+92d465e0 |
| AlmaLinux:8 | golang-tests | 0 | 1.21.13-2.module_el8.10.0+3895+92d465e0 |
| AlmaLinux:8 | grafana | 0 | 9.2.10-18.el8_10 |
| AlmaLinux:8 | grafana-selinux | 0 | 9.2.10-18.el8_10 |
| AlmaLinux:8 | libslirp | 0 | 4.4.0-2.module_el8.10.0+3845+87b84552 |
| AlmaLinux:8 | libslirp | 0 | 4.4.0-2.module_el8.10.0+3858+6ad51f9f |
| AlmaLinux:8 | libslirp | 0 | 4.4.0-2.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | libslirp-devel | 0 | 4.4.0-2.module_el8.10.0+3845+87b84552 |
| AlmaLinux:8 | libslirp-devel | 0 | 4.4.0-2.module_el8.10.0+3858+6ad51f9f |
| AlmaLinux:8 | libslirp-devel | 0 | 4.4.0-2.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | netavark | 0 | 2:1.10.3-1.module_el8.10.0+3845+87b84552 |
| AlmaLinux:8 | netavark | 0 | 2:1.10.3-1.module_el8.10.0+3858+6ad51f9f |
| AlmaLinux:8 | netavark | 0 | 2:1.10.3-1.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | oci-seccomp-bpf-hook | 0 | 1.2.10-1.module_el8.10.0+3792+03eaed9c |
| AlmaLinux:8 | oci-seccomp-bpf-hook | 0 | 1.2.10-1.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | podman | 0 | 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a |
| AlmaLinux:8 | podman-catatonit | 0 | 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a |
| AlmaLinux:8 | podman-docker | 0 | 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a |
| AlmaLinux:8 | podman-gvproxy | 0 | 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a |
| AlmaLinux:8 | podman-plugins | 0 | 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a |
| AlmaLinux:8 | podman-remote | 0 | 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a |
| AlmaLinux:8 | podman-tests | 0 | 4:4.9.4-13.module_el8.10.0+3898+7a25cb1a |
| AlmaLinux:8 | python3-criu | 0 | 3.18-5.module_el8.10.0+3858+6ad51f9f |
| AlmaLinux:8 | python3-criu | 0 | 3.18-5.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | python3-podman | 0 | 4.9.0-2.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | runc | 0 | 1:1.1.12-4.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | skopeo | 0 | 2:1.14.5-3.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | skopeo-tests | 0 | 2:1.14.5-3.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | slirp4netns | 0 | 1.2.3-1.module_el8.10.0+3845+87b84552 |
| AlmaLinux:8 | slirp4netns | 0 | 1.2.3-1.module_el8.10.0+3858+6ad51f9f |
| AlmaLinux:8 | slirp4netns | 0 | 1.2.3-1.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | toolbox | 0 | 0.0.99.5-2.module_el8.10.0+3845+87b84552 |
| AlmaLinux:8 | toolbox | 0 | 0.0.99.5-2.module_el8.10.0+3858+6ad51f9f |
| AlmaLinux:8 | toolbox | 0 | 0.0.99.5-2.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:8 | toolbox-tests | 0 | 0.0.99.5-2.module_el8.10.0+3845+87b84552 |
| AlmaLinux:8 | toolbox-tests | 0 | 0.0.99.5-2.module_el8.10.0+3858+6ad51f9f |
| AlmaLinux:8 | udica | 0 | 0.2.6-21.module_el8.10.0+3876+e55593a8 |
| AlmaLinux:9 | buildah | 0 | 2:1.37.2-1.el9 |
| AlmaLinux:9 | buildah-tests | 0 | 2:1.37.2-1.el9 |
| AlmaLinux:9 | containernetworking-plugins | 0 | 1:1.5.1-2.el9 |
| AlmaLinux:9 | git-lfs | 0 | 3.6.1-1.el9 |
| AlmaLinux:9 | go-toolset | 0 | 1.21.13-3.el9_4 |
| AlmaLinux:9 | golang | 0 | 1.21.13-3.el9_4 |
| AlmaLinux:9 | golang-bin | 0 | 1.21.13-3.el9_4 |
| AlmaLinux:9 | golang-docs | 0 | 1.21.13-3.el9_4 |
| AlmaLinux:9 | golang-misc | 0 | 1.21.13-3.el9_4 |
| AlmaLinux:9 | golang-src | 0 | 1.21.13-3.el9_4 |
| AlmaLinux:9 | golang-tests | 0 | 1.21.13-3.el9_4 |
| AlmaLinux:9 | grafana | 0 | 10.2.6-4.el9 |
| AlmaLinux:9 | grafana-selinux | 0 | 10.2.6-4.el9 |
| AlmaLinux:9 | skopeo | 0 | 2:1.16.1-1.el9 |
| AlmaLinux:9 | skopeo-tests | 0 | 2:1.16.1-1.el9 |
| AlmaLinux:9 | toolbox | 0 | 0.0.99.5-5.el9 |
| AlmaLinux:9 | toolbox-tests | 0 | 0.0.99.5-5.el9 |
| Bitnami | golang | 0 | 1.21.12 |
| Chainguard | aactl | 0 | 0.4.12-r15 |
| Chainguard | actions-runner-controller | 0 | 0.9.3-r1 |
| Chainguard | actions-runner-controller-compat | 0 | 0.9.3-r1 |
| Chainguard | actions-runner-controller-fips | 0 | 0.9.3-r1 |
| Chainguard | actions-runner-controller-fips-compat | 0 | 0.9.3-r1 |
| Chainguard | addon-resizer | 0 | 1.8.22-r1 |
| Chainguard | addon-resizer-compat | 0 | 1.8.22-r1 |
| Chainguard | addon-resizer-fips | 0 | 1.8.22-r1 |
| Chainguard | addon-resizer-fips-compat | 0 | 1.8.22-r1 |
| Chainguard | age | 0 | 1.2.0-r1 |
| Chainguard | amass | 0 | 4.2.0-r12 |
| Chainguard | argo-cd-fips-2.9 | 0 | 2.9.14-r8 |
| Chainguard | argo-cd-fips-2.9-compat | 0 | 2.9.14-r8 |
| Chainguard | argo-cd-fips-2.9-repo-server | 0 | 2.9.14-r8 |
| Chainguard | argo-workflow-cli | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-controller | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-controller-compat | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-executor | 0 | 3.6.5-r2 |
| Chainguard | argo-workflow-executor-compat | 0 | 3.6.5-r2 |
| Chainguard | argo-workflows | 0 | 3.6.5-r2 |
| Chainguard | argo-workflows-known-hosts | 0 | 3.6.5-r2 |
| Chainguard | argo-workflows-ui | 0 | 3.6.5-r2 |
| Chainguard | atlantis | 0 | 0.28.3-r1 |
| Chainguard | atlantis-fips | 0 | 0.28.3-r2 |
| Chainguard | authservice | 0 | 1.0.1-r1 |
| Chainguard | authservice-compat | 0 | 1.0.1-r1 |
| Chainguard | authservice-fips | 0 | 1.0.1-r1 |
| Chainguard | authservice-fips-compat | 0 | 1.0.1-r1 |
| Chainguard | aws-ebs-csi-driver | 0 | 1.32.0-r1 |
| Chainguard | aws-ebs-csi-driver-fips | 0 | 1.32.0-r1 |
| Chainguard | aws-efs-csi-driver | 0 | 2.0.5-r1 |
| Chainguard | aws-efs-csi-driver-fips | 0 | 1.7.0-r12 |
| Chainguard | aws-flb-cloudwatch | 0 | 1.9.4-r12 |
| Chainguard | aws-flb-cloudwatch-compat | 0 | 1.9.4-r12 |
| Chainguard | aws-flb-firehose | 0 | 1.7.2-r12 |
| Chainguard | aws-flb-firehose-compat | 0 | 1.7.2-r12 |
| Chainguard | aws-flb-kinesis | 0 | 1.10.2-r13 |
| Chainguard | aws-flb-kinesis-compat | 0 | 1.10.2-r13 |
| Chainguard | aws-load-balancer-controller | 0 | 2.8.1-r2 |
| Chainguard | aws-load-balancer-controller-compat | 0 | 2.8.1-r2 |
| Chainguard | aws-load-balancer-controller-fips | 0 | 2.8.1-r1 |
| Chainguard | aws-network-policy-agent | 0 | 1.1.2-r1 |
| Chainguard | aws-network-policy-agent-compat | 0 | 1.1.2-r1 |
| Chainguard | azcopy-fips | 0 | 10.25.1-r1 |
| Chainguard | azure-aad-pod-identity-mic | 0 | 1.8.17-r11 |
| Chainguard | azure-aad-pod-identity-nmi | 0 | 1.8.17-r11 |
| Chainguard | bank-vaults | 0 | 1.20.4-r17 |
| Chainguard | bank-vaults-fips | 0 | 1.20.4-r14 |
| Chainguard | bank-vaults-template | 0 | 1.20.4-r17 |
| Chainguard | bank-vaults-template-fips | 0 | 1.20.4-r14 |
| Chainguard | bazelisk | 0 | 1.20.0-r4 |
| Chainguard | bazelisk-default | 0 | 1.20.0-r4 |
| Chainguard | bincapz | 0 | 0.13.2-r1 |
| Chainguard | bom | 0 | 0.6.0-r7 |
| Chainguard | boring-registry | 0 | 0.14.0-r4 |
| Chainguard | boring-registry-fips | 0 | 0.14.0-r6 |
| Chainguard | buf | 0 | 1.34.0-r1 |
| Chainguard | buildah | 0 | 1.36.0-r2 |
| Chainguard | caddy | 0 | 2.8.4-r2 |
| Chainguard | caddy-fips | 0 | 2.8.4-r2 |
| Chainguard | caddy-man | 0 | 2.8.4-r2 |
| Chainguard | caddy-src | 0 | 2.8.4-r2 |
| Chainguard | cadvisor | 0 | 0.49.1-r9 |
| Chainguard | cadvisor-compat | 0 | 0.49.1-r9 |
| Chainguard | cadvisor-fips | 0 | 0.49.1-r8 |
| Chainguard | calico | 0 | 3.28.0-r4 |
| Chainguard | calico-apiserver | 0 | 3.28.0-r4 |
| Chainguard | calico-app-policy | 0 | 3.28.0-r4 |
| Chainguard | calico-cni | 0 | 3.28.0-r4 |
| Chainguard | calico-cni-compat | 0 | 3.28.0-r4 |
| Chainguard | calico-felix | 0 | 3.28.0-r4 |
| Chainguard | calico-key-cert-provisioner | 0 | 3.28.0-r4 |
| Chainguard | calico-kube-controllers | 0 | 3.28.0-r4 |
| Chainguard | calico-node | 0 | 3.28.0-r4 |
| Chainguard | calico-pod2daemon | 0 | 3.28.0-r4 |
| Chainguard | calico-pod2daemon-flexvol-compat | 0 | 3.28.0-r4 |
| Chainguard | calico-typha-client | 0 | 3.28.0-r4 |
| Chainguard | calico-typhad | 0 | 3.28.0-r4 |
| Chainguard | calicoctl | 0 | 3.28.0-r4 |
| Chainguard | capslock | 0 | 0.2.3-r1 |
| Chainguard | cass-operator | 0 | 1.21.1-r1 |
| Chainguard | cass-operator-compat | 0 | 1.21.1-r1 |
| Chainguard | cass-operator-config | 0 | 1.21.1-r1 |
| Chainguard | cass-operator-fips-no-pvc-delete | 0 | 1.21.1-r1 |
| Chainguard | cass-operator-fips-no-pvc-delete-compat | 0 | 1.21.1-r1 |
| Chainguard | cert-exporter | 0 | 2.12.0-r7 |
| Chainguard | cert-exporter-fips | 0 | 2.12.0-r8 |
| Chainguard | cert-manager-1.12 | 0 | 1.12.12-r2 |
| Chainguard | cert-manager-1.12-acmesolver | 0 | 1.12.12-r2 |
| Chainguard | cert-manager-1.12-cainjector | 0 | 1.12.12-r2 |
| Chainguard | cert-manager-1.12-controller | 0 | 1.12.12-r2 |
| Chainguard | cert-manager-1.12-webhook | 0 | 1.12.12-r2 |
| Chainguard | cert-manager-1.14 | 0 | 1.14.7-r2 |
| Chainguard | cert-manager-1.14-acmesolver | 0 | 1.14.7-r2 |
| Chainguard | cert-manager-1.14-cainjector | 0 | 1.14.7-r2 |
| Chainguard | cert-manager-1.14-controller | 0 | 1.14.7-r2 |
| Chainguard | cert-manager-1.14-startupapicheck | 0 | 1.14.7-r2 |
| Chainguard | cert-manager-1.14-webhook | 0 | 1.14.7-r2 |
| Chainguard | cert-manager-1.15 | 0 | 1.15.1-r1 |
| Chainguard | cert-manager-1.15-acmesolver | 0 | 1.15.1-r1 |
| Chainguard | cert-manager-1.15-cainjector | 0 | 1.15.1-r1 |
| Chainguard | cert-manager-1.15-controller | 0 | 1.15.1-r1 |
| Chainguard | cert-manager-1.15-startupapicheck | 0 | 1.15.1-r1 |
| Chainguard | cert-manager-1.15-webhook | 0 | 1.15.1-r1 |
| Chainguard | cert-manager-acmesolver-1.12 | 0 | 1.12.12-r2 |
| Chainguard | cert-manager-acmesolver-1.12-bitnami-compat | 0 | 1.12.12-r2 |
| Chainguard | cert-manager-acmesolver-1.12-iamguarded-compat | 0 | 1.12.12-r2 |
| Chainguard | cert-manager-acmesolver-1.15 | 0 | 1.15.1-r1 |
| Chainguard | cert-manager-acmesolver-1.15-bitnami-compat | 0 | 1.15.1-r1 |
| Chainguard | cert-manager-acmesolver-1.15-iamguarded-compat | 0 | 1.15.1-r1 |
| Chainguard | cert-manager-acmesolver-fips-1.12 | 0 | 1.12.12-r2 |
| Chainguard | cert-manager-acmesolver-fips-1.15 | 0 | 1.15.1-r1 |
| Chainguard | cert-manager-cainjector-1.12 | 0 | 1.12.12-r2 |
Related vulnerabilities
- CVE-2025-68121 During session resumption in crypto/tls, if the underlying Config has its ClientCAs or… Also affects stdlib
- CVE-2025-22873 It was possible to improperly access the parent directory of an os.Root by opening a… Also affects stdlib
- GO-2026-4403 Improper access to parent directory of root in os Also affects stdlib
- CVE-2025-61726 The net/url package does not set a limit on the number of query parameters in a query. Also affects stdlib
- CVE-2025-61728 archive/zip uses a super-linear file name indexing algorithm that is invoked the first… Also affects stdlib
- CVE-2025-61730 During the TLS 1.3 handshake if multiple messages are sent in records that span… Also affects stdlib
- CVE-2025-61727 An excluded subdomain constraint in a certificate chain does not restrict the usage of… Also affects stdlib
- CVE-2025-61729 Within HostnameError.Error(), when constructing an error string, there is no limit to the… Also affects stdlib