Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to curl 8.4.0 #532

Merged
merged 4 commits into from
Oct 11, 2023
Merged

Update to curl 8.4.0 #532

merged 4 commits into from
Oct 11, 2023

Conversation

ecnelises
Copy link
Contributor

@ecnelises ecnelises commented Oct 11, 2023

cURL 8.4.0 fixes two vulnerabilities:

@ecnelises
Copy link
Contributor Author

ecnelises commented Oct 11, 2023

The macOS failure is reproducible locally, and previous commit is green. Looking.

Upstream curl commit 3aa3cc9b changed MIME multipart boundary from 16
to 22 bytes. Update the tests accordingly. Disable such tests when using
system curl to avoid expected failure.
@ecnelises
Copy link
Contributor Author

curl/curl@3aa3cc9 breaks behavior of MIME multipart boundaries. I updated the tests and disabled them when using system curl.

@ehuss
Copy link
Collaborator

ehuss commented Oct 11, 2023

I've been trying to investigate the upload_lots test hanging, but not getting too far. I bisected the change to curl/curl#11939, which resulted in a report of tests hanging in curl/curl#12033, but there were two fixes that supposedly fixed the hangs (which are in 8.4).

I'm also wondering if the hanging is more related to mio, which is a very old version. Worringly, #358 tried to update, but ran into timeout problems, too.

If I can't make much progress soon, I think we should just disable the test for now to get the CVE fixes out. However, I don't have a grasp if that will make things worse if the hangs are legitimately a problem.

It is quite strange that it only fails on Linux.

ehuss added 2 commits October 11, 2023 15:32
This determines the multipart boundary size based on the version of
curl currently being used.
This test is hanging on Linux with the 8.4.0 update.

My poor understanding is that `perform()` should not be used with
`curl_multi_socket_action` (that is, it should only use `perform` or
`action`, not both). Removing this seems to fix things.

Note that there were some other hang-related changes in the 8.4.0
release. I bisected the hang to curl/curl#11939,
which then uncovered some curl tests that were hanging in
curl/curl#12033. That then spawned off
two more changes to fix the hangs (both of which are also in 8.4.0).
However, this upload_lots was still failing. I think this is likely
due to an incorrect use of the API poorly interacting with the timer
changes in 8.4.0.
@ehuss
Copy link
Collaborator

ehuss commented Oct 11, 2023

I pushed a fix for the timeout. I also pushed a slightly different approach for the multipart boundary size change which should work with whatever curl version is in use.

I'm going to go ahead and merge to get the CVE fixes out.

@ehuss ehuss merged commit de57280 into alexcrichton:main Oct 11, 2023
@ecnelises
Copy link
Contributor Author

Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants