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

fix panic on xn--55555577 #940

Merged
merged 3 commits into from
Jun 18, 2024
Merged

fix panic on xn--55555577 #940

merged 3 commits into from
Jun 18, 2024

Conversation

Byron
Copy link
Contributor

@Byron Byron commented Jun 16, 2024

This PR fixes a panic discovered by clusterfuzz via gitoxide (PR).

Details can be found in Byron/gitoxide#1401 (but only once the bug is considered fixed by the fuzzer).

Notes for the Reviewer

  • The fix assumes that this is indeed an invalid punycode sequence, which is why it's made to error.
  • The panic would only happen in debug mode, or if compiled with integer overflow checks specifically.
    However, this may indeed be the case for some applications which require this extra-levle of safety.
  • A new patch release would be appreciated - the fuzzer will keep sending me emails otherwise as it seems to 'bounce' from fixed to not-fixed on this one.

@Byron Byron mentioned this pull request Jun 16, 2024
3 tasks
Copy link

codecov bot commented Jun 16, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Please upload report for BASE (main@3d6dbbb). Learn more about missing BASE report.

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #940   +/-   ##
=======================================
  Coverage        ?   79.83%           
=======================================
  Files           ?       23           
  Lines           ?     4220           
  Branches        ?        0           
=======================================
  Hits            ?     3369           
  Misses          ?      851           
  Partials        ?        0           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@Byron Byron marked this pull request as ready for review June 16, 2024 15:25
@valenting valenting enabled auto-merge June 17, 2024 12:04
@valenting valenting disabled auto-merge June 17, 2024 12:14
@valenting valenting enabled auto-merge June 18, 2024 07:10
@valenting valenting added this pull request to the merge queue Jun 18, 2024
Merged via the queue into servo:main with commit 467ef63 Jun 18, 2024
14 checks passed
@Byron Byron deleted the fix-panic branch June 18, 2024 07:35
bors added a commit to rust-lang/cargo that referenced this pull request Jul 2, 2024
chore(deps): update compatible

[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [annotate-snippets](https://github.com/rust-lang/annotate-snippets-rs) | workspace.dependencies | patch | `0.11.3` -> `0.11.4` |
| [clap](https://github.com/clap-rs/clap) | workspace.dependencies | patch | `4.5.6` -> `4.5.8` |
| [curl-sys](https://github.com/alexcrichton/curl-rust) | workspace.dependencies | patch | `0.4.72+curl-8.6.0` -> `0.4.73` |
| [libloading](https://github.com/nagisa/rust_libloading) | workspace.dependencies | patch | `0.8.3` -> `0.8.4` |
| [memchr](https://github.com/BurntSushi/memchr) | workspace.dependencies | patch | `2.7.2` -> `2.7.4` |
| [proptest](https://proptest-rs.github.io/proptest/proptest/index.html) ([source](https://github.com/proptest-rs/proptest)) | workspace.dependencies | minor | `1.4.0` -> `1.5.0` |
| [serde_json](https://github.com/serde-rs/json) | workspace.dependencies | patch | `1.0.117` -> `1.0.120` |
| [snapbox](https://github.com/assert-rs/trycmd/tree/main/crates/snapbox) ([source](https://github.com/assert-rs/trycmd)) | workspace.dependencies | patch | `0.6.9` -> `0.6.10` |
| [url](https://github.com/servo/rust-url) | workspace.dependencies | patch | `2.5.0` -> `2.5.2` |

---

### Release Notes

<details>
<summary>rust-lang/annotate-snippets-rs (annotate-snippets)</summary>

### [`v0.11.4`](https://github.com/rust-lang/annotate-snippets-rs/blob/HEAD/CHANGELOG.md#0114---2024-06-15)

[Compare Source](https://github.com/rust-lang/annotate-snippets-rs/compare/0.11.3...0.11.4)

##### Fixes

-   Annotations for `\r\n` are now correctly handled [#&#8203;131](https://github.com/rust-lang/annotate-snippets-rs/pull/131)

</details>

<details>
<summary>clap-rs/clap (clap)</summary>

### [`v4.5.8`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#458---2024-06-28)

[Compare Source](https://github.com/clap-rs/clap/compare/v4.5.7...v4.5.8)

##### Fixes

-   Reduce extra flushes

### [`v4.5.7`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#457---2024-06-10)

[Compare Source](https://github.com/clap-rs/clap/compare/v4.5.6...v4.5.7)

##### Fixes

-   Clean up error message when too few arguments for `num_args`

</details>

<details>
<summary>alexcrichton/curl-rust (curl-sys)</summary>

### [`v0.4.73`](https://github.com/alexcrichton/curl-rust/compare/curl-sys-0.4.72...curl-sys-0.4.73)

[Compare Source](https://github.com/alexcrichton/curl-rust/compare/curl-sys-0.4.72...curl-sys-0.4.73)

</details>

<details>
<summary>nagisa/rust_libloading (libloading)</summary>

### [`v0.8.4`](https://github.com/nagisa/rust_libloading/compare/0.8.3...0.8.4)

[Compare Source](https://github.com/nagisa/rust_libloading/compare/0.8.3...0.8.4)

</details>

<details>
<summary>BurntSushi/memchr (memchr)</summary>

### [`v2.7.4`](https://github.com/BurntSushi/memchr/compare/2.7.3...2.7.4)

[Compare Source](https://github.com/BurntSushi/memchr/compare/2.7.3...2.7.4)

### [`v2.7.3`](https://github.com/BurntSushi/memchr/compare/2.7.2...2.7.3)

[Compare Source](https://github.com/BurntSushi/memchr/compare/2.7.2...2.7.3)

</details>

<details>
<summary>proptest-rs/proptest (proptest)</summary>

### [`v1.5.0`](https://github.com/proptest-rs/proptest/compare/v1.4.0...v1.5.0)

[Compare Source](https://github.com/proptest-rs/proptest/compare/v1.4.0...v1.5.0)

</details>

<details>
<summary>serde-rs/json (serde_json)</summary>

### [`v1.0.120`](https://github.com/serde-rs/json/releases/tag/v1.0.120)

[Compare Source](https://github.com/serde-rs/json/compare/v1.0.119...v1.0.120)

-   Correctly specify required version of `indexmap` dependency ([#&#8203;1152](https://github.com/serde-rs/json/issues/1152), thanks [`@&#8203;cforycki](https://github.com/cforycki))`

### [`v1.0.119`](https://github.com/serde-rs/json/releases/tag/v1.0.119)

[Compare Source](https://github.com/serde-rs/json/compare/v1.0.118...v1.0.119)

-   Add `serde_json::Map::shift_insert` ([#&#8203;1149](https://github.com/serde-rs/json/issues/1149), thanks [`@&#8203;joshka](https://github.com/joshka))`

### [`v1.0.118`](https://github.com/serde-rs/json/releases/tag/v1.0.118)

[Compare Source](https://github.com/serde-rs/json/compare/v1.0.117...v1.0.118)

-   Implement Hash for serde_json::Value ([#&#8203;1127](https://github.com/serde-rs/json/issues/1127), thanks [`@&#8203;edwardycl](https://github.com/edwardycl))`

</details>

<details>
<summary>assert-rs/trycmd (snapbox)</summary>

### [`v0.6.10`](https://github.com/assert-rs/trycmd/compare/snapbox-v0.6.9...snapbox-v0.6.10)

[Compare Source](https://github.com/assert-rs/trycmd/compare/snapbox-v0.6.9...snapbox-v0.6.10)

</details>

<details>
<summary>servo/rust-url (url)</summary>

### [`v2.5.2`](https://github.com/servo/rust-url/releases/tag/v2.5.2)

[Compare Source](https://github.com/servo/rust-url/compare/v2.5.1...v2.5.2)

#### What's Changed

-   fix panic on `xn--55555577` by [`@&#8203;Byron](https://github.com/Byron)` in [servo/rust-url#940
-   Update idna to 1.0.1 by [`@&#8203;valenting](https://github.com/valenting)` in [servo/rust-url#945
-   Revert "Reimplement idna on top of ICU4X" by [`@&#8203;valenting](https://github.com/valenting)` in [servo/rust-url#946

This release reverts recent IDNA changes and the MSRV back to rust 1.56
The idna v1.0.1 crate now lives on the [idna-v1x](https://github.com/servo/rust-url/tree/idna-v1x) branch.

**Full Changelog**: servo/rust-url@v2.5.1...v2.5.2

### [`v2.5.1`](https://github.com/servo/rust-url/releases/tag/v2.5.1)

[Compare Source](https://github.com/servo/rust-url/compare/v2.5.0...v2.5.1)

#### What's Changed

-   Be more detailed in documentation of set_query by [`@&#8203;philippeitis](https://github.com/philippeitis)` in [servo/rust-url#737
-   perf(punycode): avoid double allocation in decode_to_string by [`@&#8203;bishopcheckmate](https://github.com/bishopcheckmate)` in [servo/rust-url#894
-   Use SPECIAL_PATH_SEGMENT when encoding path in from_file_path by [`@&#8203;valenting](https://github.com/valenting)` in [servo/rust-url#902
-   Add dependabot by [`@&#8203;oriontvv](https://github.com/oriontvv)` in [servo/rust-url#903
-   Bump codecov/codecov-action from 3 to 4 by [`@&#8203;dependabot](https://github.com/dependabot)` in [servo/rust-url#904
-   Bump actions/upload-artifact from 2 to 4 by [`@&#8203;dependabot](https://github.com/dependabot)` in [servo/rust-url#905
-   Bump actions/checkout from 3 to 4 by [`@&#8203;dependabot](https://github.com/dependabot)` in [servo/rust-url#906
-   Fix non-base64 data URLs with % characters not followed by hex digits by [`@&#8203;SmaugPool](https://github.com/SmaugPool)` in [servo/rust-url#797
-   Rename `master` branch to `main` by [`@&#8203;mrobinson](https://github.com/mrobinson)` in [servo/rust-url#914
-   Add bench for to_ascii on an already-Punycode name by [`@&#8203;hsivonen](https://github.com/hsivonen)` in [servo/rust-url#915
-   Update URLs by [`@&#8203;atouchet](https://github.com/atouchet)` in [servo/rust-url#916
-   Fix lint by [`@&#8203;valenting](https://github.com/valenting)` in [servo/rust-url#920
-   Fix multiple issues on wasm32, and runs url tests in CI by [`@&#8203;micolous](https://github.com/micolous)` in [servo/rust-url#886
-   Non-special URLs can have their paths erased by [`@&#8203;DylanOToole2](https://github.com/DylanOToole2)` in [servo/rust-url#921
-   docs: document SyntaxViolation variants, remove bare URLs by [`@&#8203;aatifsyed](https://github.com/aatifsyed)` in [servo/rust-url#924
-   docs: Document possible replacements of the base URL by [`@&#8203;mo8it](https://github.com/mo8it)` in [servo/rust-url#926
-   Reimplement idna on top of ICU4X by [`@&#8203;hsivonen](https://github.com/hsivonen)` in [servo/rust-url#923

#### New Contributors

-   [`@&#8203;philippeitis](https://github.com/philippeitis)` made their first contribution in [servo/rust-url#737
-   [`@&#8203;bishopcheckmate](https://github.com/bishopcheckmate)` made their first contribution in [servo/rust-url#894
-   [`@&#8203;oriontvv](https://github.com/oriontvv)` made their first contribution in [servo/rust-url#903
-   [`@&#8203;dependabot](https://github.com/dependabot)` made their first contribution in [servo/rust-url#904
-   [`@&#8203;SmaugPool](https://github.com/SmaugPool)` made their first contribution in [servo/rust-url#797
-   [`@&#8203;hsivonen](https://github.com/hsivonen)` made their first contribution in [servo/rust-url#915
-   [`@&#8203;micolous](https://github.com/micolous)` made their first contribution in [servo/rust-url#886
-   [`@&#8203;DylanOToole2](https://github.com/DylanOToole2)` made their first contribution in [servo/rust-url#921
-   [`@&#8203;aatifsyed](https://github.com/aatifsyed)` made their first contribution in [servo/rust-url#924
-   [`@&#8203;mo8it](https://github.com/mo8it)` made their first contribution in [servo/rust-url#926

**Full Changelog**: servo/rust-url@v2.5.0...v2.5.1

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 5am on the first day of the month" (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/rust-lang/cargo).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjQyMS4wIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->
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.

None yet

2 participants