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 anarchist URL where path starts with // #817

Merged
merged 8 commits into from
Mar 5, 2023
Merged

Conversation

qsantos
Copy link
Contributor

@qsantos qsantos commented Feb 28, 2023

This PR closes #799 by refusing to parse URLs with no authority whose normalized path would start with a double-slash.


The issue comes from the remove dot segments step. Let's consider the URI m:/.//. Then, according to the RFC:

B. if the input buffer begins with a prefix of "/./" […], then replace that prefix with "/"

So it should be normalized to m://, but this has different semantics (resulting in \ being interpreted as being part of the authority in the original example).

I have conducted a few tests with some URI normalization libraries:

$ node test.js
http://example.com/a/c/d
m:/.//
$ cat test.php
<?php
require_once 'URLNormalizer.php';
echo (new Normalizer('http://example.com/a/b/../c/d'))->normalize(), "\n";
echo (new Normalizer('m:/.//'))->normalize(), "\n";
?>
$ php test.php
http://example.com/a/c/d
m:/
$ cat test.pl
use feature qw(say);
use URI::Normalize qw(normalize_uri);
say normalize_uri(URI->new('http://example.com/a/b/../c/d'));
say normalize_uri(URI->new('m:/.//'));
$ perl test.pl
http://example.com/a/c/d
m://
$ cat test.rb
require 'addressable/uri'
p Addressable::URI.parse('http://example.com/a/b/../c/d').normalize.to_s
p Addressable::URI.parse('m:/.//').normalize.to_s
$ ruby test.rb
"http://example.com/a/c/d"
/usr/share/rubygems-integration/all/gems/addressable-2.8.1/lib/addressable/uri.rb:2487:in `validate': Cannot have a path with two leading slashes without an authority set: 'm://' (Addressable::URI::InvalidURIError)
	from /usr/share/rubygems-integration/all/gems/addressable-2.8.1/lib/addressable/uri.rb:2410:in `defer_validation'
	from /usr/share/rubygems-integration/all/gems/addressable-2.8.1/lib/addressable/uri.rb:839:in `initialize'
	from /usr/share/rubygems-integration/all/gems/addressable-2.8.1/lib/addressable/uri.rb:2184:in `new'
	from /usr/share/rubygems-integration/all/gems/addressable-2.8.1/lib/addressable/uri.rb:2184:in `normalize'
	from test.rb:3:in `<main>'

For PHP, I am using https://github.com/glenscott/url-normalizer. In short:

  • Node does not remove the dot before a double-slash; I think the logic is somewhere in there, but I never liked browsing Firefox's source code, so who knows?
  • PHP removes the dot but avoids leaving a double-slash where it would be reinterpreted as the authority; this is done by merging consecutive slashes, which is does not conform to the RFC
  • Perl exhibits the same bug as rust-url
  • Ruby straight up refuses to parse a path with two leading slashes without an authority

I feel like Ruby's is the most consistent and straightforward solution.

This does mean that the no_panic test from #654 must be amended. However, we can cover the m:/.// case in a dedicated unit test.

@valenting
Copy link
Collaborator

You reference an RFC. This crate explicitly only implements the URL Standard.
According to the reference URL parser m:/.//\\ should parse successfully

@qsantos
Copy link
Contributor Author

qsantos commented Mar 1, 2023

My bad. Thanks for the proper reference. Then, it looks like this comes from the serialization part, more specifically, from section 4.5, item 3, whose note explicitly mentions the case we are discussing. I have correspondingly moved the correction to the serialization.

@qsantos qsantos force-pushed the master branch 2 times, most recently from 1479c09 to 4b202b1 Compare March 2, 2023 10:27
@qsantos
Copy link
Contributor Author

qsantos commented Mar 2, 2023

Rebased to take into account the new tests

@qsantos qsantos force-pushed the master branch 2 times, most recently from 724bdf1 to b0ba159 Compare March 2, 2023 10:52
@codecov
Copy link

codecov bot commented Mar 2, 2023

Codecov Report

Patch coverage: 83.87% and project coverage change: -0.02 ⚠️

Comparison is base (edeaea7) 82.74% compared to head (fd29f5f) 82.73%.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #817      +/-   ##
==========================================
- Coverage   82.74%   82.73%   -0.02%     
==========================================
  Files          20       20              
  Lines        3303     3330      +27     
==========================================
+ Hits         2733     2755      +22     
- Misses        570      575       +5     
Impacted Files Coverage Δ
url/src/slicing.rs 91.93% <80.00%> (-1.17%) ⬇️
url/src/parser.rs 81.38% <80.95%> (+0.06%) ⬆️
url/src/lib.rs 76.47% <100.00%> (+0.12%) ⬆️
data-url/tests/wpt.rs 84.41% <0.00%> (-1.30%) ⬇️

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

☔ View full report at Codecov.
📢 Do you have feedback about the report comment? Let us know in this issue.

@@ -7668,6 +7660,7 @@
"hash": ""
},
"Do not serialize /. in path",
"skip next",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we need to also explicitly handle this part here

@qsantos
Copy link
Contributor Author

qsantos commented Mar 4, 2023

I have moved the handling of empty fragment to with_query_and_fragment. That way, it should be able to normalize URLs whether they are a fresh parse, or a combination of an existing URL and a relative path.

Copy link
Collaborator

@valenting valenting left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great progress, thank for working on this. I only have a few small issues.
Also, it would be nice to add some unit tests to improve code coverage.

if path_start_as_usize == scheme_end_as_usize + 1 {
// Anarchist URL
if self.serialization[path_start_as_usize..].starts_with("//") {
// Case 1: The base URL did not have an empty fragment, but the resulting one does
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fragment -> something else.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yes, thanks, I meant “path segment”. I have rebased for a less confusing history with the proper terminology.

.as_bytes()
.get(path_start_as_usize)
.copied(),
Some(b'/')
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This seems overly verbose. self.serialization.as_bytes()[path_start_as_usize] == b'/' should work?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Absolutely! I edited this code quite a bit, and did not notice that the .get() was not necessary anymore here. Thanks!

remaining: Input<'_>,
) -> ParseResult<Url> {
// Special case for anarchist URL's with a leading empty fragment
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fragment has a special meaning in the context of a URL - it's the bit after the # sign. Let's use another word here instead.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

} else if path_start_as_usize == scheme_end_as_usize + 3
&& &self.serialization[scheme_end_as_usize..path_start_as_usize] == ":/."
{
// Anarchist URL with leading empty fragment
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fragment -> something else.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

.copied()
!= Some(b'/')
{
// Case 2: The base URL had an empty fragment, but the resulting one does not
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fragment -> something else.

Copy link
Collaborator

@valenting valenting left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great stuff. Thank you!

@valenting valenting merged commit 74b8694 into servo:master Mar 5, 2023
@qsantos
Copy link
Contributor Author

qsantos commented Mar 5, 2023

Thanks for the reactivity and the detailed comments!

Position::AfterPort => {
if let Some(port) = self.port {
debug_assert!(self.byte_at(self.host_end) == b':');
self.host_end as usize + ":".len() + port.to_string().len()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oww, this can be done without allocating string.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

o0Ignition0o added a commit to apollographql/router that referenced this pull request Jun 13, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change | Age | Adoption | Passing |
Confidence |
|---|---|---|---|---|---|---|---|
| [clap](https://github.com/clap-rs/clap) | dependencies | patch |
`4.3.0` -> `4.3.3` |
[![age](https://badges.renovateapi.com/packages/crate/clap/4.3.3/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/crate/clap/4.3.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/crate/clap/4.3.3/compatibility-slim/4.3.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/crate/clap/4.3.3/confidence-slim/4.3.0)](https://docs.renovatebot.com/merge-confidence/)
|
| [dd-trace](https://github.com/DataDog/dd-trace-js) | dependencies |
minor | [`3.21.0` ->
`3.22.1`](https://renovatebot.com/diffs/npm/dd-trace/3.21.0/3.22.1) |
[![age](https://badges.renovateapi.com/packages/npm/dd-trace/3.22.1/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/dd-trace/3.22.1/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/dd-trace/3.22.1/compatibility-slim/3.21.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/dd-trace/3.22.1/confidence-slim/3.21.0)](https://docs.renovatebot.com/merge-confidence/)
|
| [flate2](https://github.com/rust-lang/flate2-rs) | dependencies |
patch | `1.0.24` -> `1.0.26` |
[![age](https://badges.renovateapi.com/packages/crate/flate2/1.0.26/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/crate/flate2/1.0.26/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/crate/flate2/1.0.26/compatibility-slim/1.0.24)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/crate/flate2/1.0.26/confidence-slim/1.0.24)](https://docs.renovatebot.com/merge-confidence/)
|
| [once_cell](https://github.com/matklad/once_cell) | dev-dependencies
| minor | `1.17.2` -> `1.18.0` |
[![age](https://badges.renovateapi.com/packages/crate/once_cell/1.18.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/crate/once_cell/1.18.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/crate/once_cell/1.18.0/compatibility-slim/1.17.2)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/crate/once_cell/1.18.0/confidence-slim/1.17.2)](https://docs.renovatebot.com/merge-confidence/)
|
| [once_cell](https://github.com/matklad/once_cell) | dependencies |
minor | `1.17.2` -> `1.18.0` |
[![age](https://badges.renovateapi.com/packages/crate/once_cell/1.18.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/crate/once_cell/1.18.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/crate/once_cell/1.18.0/compatibility-slim/1.17.2)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/crate/once_cell/1.18.0/confidence-slim/1.17.2)](https://docs.renovatebot.com/merge-confidence/)
|
| [regex](https://github.com/rust-lang/regex) | dependencies | patch |
`1.8.3` -> `1.8.4` |
[![age](https://badges.renovateapi.com/packages/crate/regex/1.8.4/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/crate/regex/1.8.4/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/crate/regex/1.8.4/compatibility-slim/1.8.3)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/crate/regex/1.8.4/confidence-slim/1.8.3)](https://docs.renovatebot.com/merge-confidence/)
|
| [rust-embed](https://github.com/pyros2097/rust-embed) | dependencies
| minor | `6.6.1` -> `6.7.0` |
[![age](https://badges.renovateapi.com/packages/crate/rust-embed/6.7.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/crate/rust-embed/6.7.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/crate/rust-embed/6.7.0/compatibility-slim/6.6.1)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/crate/rust-embed/6.7.0/confidence-slim/6.6.1)](https://docs.renovatebot.com/merge-confidence/)
|
| [serde](https://serde.rs)
([source](https://github.com/serde-rs/serde)) | dependencies | patch |
`1.0.163` -> `1.0.164` |
[![age](https://badges.renovateapi.com/packages/crate/serde/1.0.164/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/crate/serde/1.0.164/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/crate/serde/1.0.164/compatibility-slim/1.0.163)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/crate/serde/1.0.164/confidence-slim/1.0.163)](https://docs.renovatebot.com/merge-confidence/)
|
| [tempfile](https://stebalien.com/projects/tempfile-rs/)
([source](https://github.com/Stebalien/tempfile)) | dev-dependencies |
minor | `3.5.0` -> `3.6.0` |
[![age](https://badges.renovateapi.com/packages/crate/tempfile/3.6.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/crate/tempfile/3.6.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/crate/tempfile/3.6.0/compatibility-slim/3.5.0)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/crate/tempfile/3.6.0/confidence-slim/3.5.0)](https://docs.renovatebot.com/merge-confidence/)
|
| [typescript](https://www.typescriptlang.org/)
([source](https://github.com/Microsoft/TypeScript)) | devDependencies
| minor | [`5.0.4` ->
`5.1.3`](https://renovatebot.com/diffs/npm/typescript/5.0.4/5.1.3) |
[![age](https://badges.renovateapi.com/packages/npm/typescript/5.1.3/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/npm/typescript/5.1.3/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/npm/typescript/5.1.3/compatibility-slim/5.0.4)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/npm/typescript/5.1.3/confidence-slim/5.0.4)](https://docs.renovatebot.com/merge-confidence/)
|
| [url](https://github.com/servo/rust-url) | dependencies | minor |
`2.3.1` -> `2.4.0` |
[![age](https://badges.renovateapi.com/packages/crate/url/2.4.0/age-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://badges.renovateapi.com/packages/crate/url/2.4.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://badges.renovateapi.com/packages/crate/url/2.4.0/compatibility-slim/2.3.1)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://badges.renovateapi.com/packages/crate/url/2.4.0/confidence-slim/2.3.1)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

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

###
[`v4.3.3`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;433---2023-06-09)

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

##### Features

- `Command::defer` for delayed initialization of subcommands to reduce
startup times of large applications like deno

###
[`v4.3.2`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;432---2023-06-05)

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

##### Fixes

- *(derive)* Don't produce `unused_equalifications` warnings when
someone brings a clap type into scope

###
[`v4.3.1`](https://github.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#&#8203;431---2023-06-02)

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

##### Performance

-   *(derive)* Reduce the amount of generated code

</details>

<details>
<summary>DataDog/dd-trace-js</summary>

###
[`v3.22.1`](https://github.com/DataDog/dd-trace-js/releases/tag/v3.22.1)

[Compare
Source](https://github.com/DataDog/dd-trace-js/compare/v3.22.0...v3.22.1)

##### Bug Fixes

- **pg**: do not throw when query contains getter
([#&#8203;3212](https://github.com/DataDog/dd-trace-js/issues/3212))
- **esbuild**: graceful continue when bundling dead code
([#&#8203;3215](https://github.com/DataDog/dd-trace-js/issues/3215))

##### Improvements

- **express**: improve express regex middleware path parsing
([#&#8203;3203](https://github.com/DataDog/dd-trace-js/issues/3203))
- **core**: include send-data missing headers and organize telemetry
config variables
([#&#8203;3055](https://github.com/DataDog/dd-trace-js/issues/3055))
- **ci**: add ability to create and publish .deb and .rpm packages
([#&#8203;3189](https://github.com/DataDog/dd-trace-js/issues/3189))

###
[`v3.22.0`](https://github.com/DataDog/dd-trace-js/releases/tag/v3.22.0):
3.22.0

[Compare
Source](https://github.com/DataDog/dd-trace-js/compare/v3.21.0...v3.22.0)

##### Features

- **waf:** Support RC custom rules
([#&#8203;3126](https://github.com/DataDog/dd-trace-js/issues/3126))
- **waf:** Update blocking page and status from RC
([#&#8203;3195](https://github.com/DataDog/dd-trace-js/issues/3195))
- **iast:** Detect SSRF vulnerabilities
([#&#8203;3115](https://github.com/DataDog/dd-trace-js/issues/3115))
- **iast:** Detect Insecure cookie vulnerabilities
([#&#8203;3184](https://github.com/DataDog/dd-trace-js/issues/3184))

##### Improvements

- **profiling:** Use process as default strategy for oom export
([#&#8203;3136](https://github.com/DataDog/dd-trace-js/issues/3136))
- **tracer:** Service Naming API
([#&#8203;3161](https://github.com/DataDog/dd-trace-js/issues/3161),
[#&#8203;2941](https://github.com/DataDog/dd-trace-js/issues/2941),
[#&#8203;2961](https://github.com/DataDog/dd-trace-js/issues/2961))
- **tracer:** Cache integrations - Service Naming
([#&#8203;3056](https://github.com/DataDog/dd-trace-js/issues/3056))
- **tracer:** More beautiful debug logs
([#&#8203;3171](https://github.com/DataDog/dd-trace-js/issues/3171))
- **tracer:** postgres: DBM full service fallback w/ prepared statements
([#&#8203;3186](https://github.com/DataDog/dd-trace-js/issues/3186))
- **tracer:** Make HTTP clients fit in the plugin hierarchy
([#&#8203;3178](https://github.com/DataDog/dd-trace-js/issues/3178))
- **ci-visibility:** Extract code coverage from cypress
([#&#8203;3159](https://github.com/DataDog/dd-trace-js/issues/3159))
- **ci-visibility:** Change gitlab's pipeline URL extraction
([#&#8203;3183](https://github.com/DataDog/dd-trace-js/issues/3183))
- **ci-visibility:** Test skipping logic for cypress
([#&#8203;3167](https://github.com/DataDog/dd-trace-js/issues/3167))
- **waf:** Update AppSec blocking templates
([#&#8203;3181](https://github.com/DataDog/dd-trace-js/issues/3181))
- **waf:** Update AppSec rules to 1.7.1
([#&#8203;3185](https://github.com/DataDog/dd-trace-js/issues/3185))
- **iast:** Detect SQL injection with sequelize
([#&#8203;3154](https://github.com/DataDog/dd-trace-js/issues/3154))

##### Bug Fixes

- **iast:** Fix evidence redaction
([#&#8203;3160](https://github.com/DataDog/dd-trace-js/issues/3160))
- **iast:** Fix path traversal vulnerability detection on close file
([#&#8203;3172](https://github.com/DataDog/dd-trace-js/issues/3172))
- **ci-visibility:** Fix cucumber parallel mode
([#&#8203;3156](https://github.com/DataDog/dd-trace-js/issues/3156))
- **ci-visibility:** Remove git.properties error log
([#&#8203;3179](https://github.com/DataDog/dd-trace-js/issues/3179))
- **ci-visibility:** Fix playwright@1.30.0
([#&#8203;3180](https://github.com/DataDog/dd-trace-js/issues/3180))
- **waf:** Fix ASM_DD batch update
([#&#8203;3165](https://github.com/DataDog/dd-trace-js/issues/3165))

</details>

<details>
<summary>rust-lang/flate2-rs</summary>

###
[`v1.0.26`](https://github.com/rust-lang/flate2-rs/releases/tag/1.0.26)

[Compare
Source](https://github.com/rust-lang/flate2-rs/compare/1.0.25...1.0.26)

#### What's Changed

- Add decompress file example by
[@&#8203;MichaelMcDonnell](https://github.com/MichaelMcDonnell) in
[rust-lang/flate2-rs#329
- Remove `extern crate`s by
[@&#8203;JohnTitor](https://github.com/JohnTitor) in
[rust-lang/flate2-rs#331
- Make clippy happy + a few more cleanups by
[@&#8203;nyurik](https://github.com/nyurik) in
[rust-lang/flate2-rs#285
- Fix left-overs on decoder docs by
[@&#8203;JohnTitor](https://github.com/JohnTitor) in
[rust-lang/flate2-rs#333
- Mention MSRV policy by
[@&#8203;JohnTitor](https://github.com/JohnTitor) in
[rust-lang/flate2-rs#332
- Bump miniz-oxide to prevent assertion failure by
[@&#8203;softdevca](https://github.com/softdevca) in
[rust-lang/flate2-rs#335
- Enable all-features, Use doc_auto_cfg on docs.rs by
[@&#8203;wcampbell0x2a](https://github.com/wcampbell0x2a) in
[rust-lang/flate2-rs#336
- Fix a typo in doc for write::GzDecoder by
[@&#8203;yestyle](https://github.com/yestyle) in
[rust-lang/flate2-rs#337
- Fixed overflow bug in crc combine by
[@&#8203;AntonJMLarsson](https://github.com/AntonJMLarsson) in
[rust-lang/flate2-rs#330
- Added feature for enabling default zlib-sys features by
[@&#8203;taco-paco](https://github.com/taco-paco) in
[rust-lang/flate2-rs#322
- Add write::MultiGzDecoder for multi-member gzip data by
[@&#8203;jongiddy](https://github.com/jongiddy) in
[rust-lang/flate2-rs#325
- gha: Upgrade to windows-2022 by
[@&#8203;JohnTitor](https://github.com/JohnTitor) in
[rust-lang/flate2-rs#343
- gha: Specify tag instead of branch on actions/checkout by
[@&#8203;JohnTitor](https://github.com/JohnTitor) in
[rust-lang/flate2-rs#342
- Prepare 1.0.26 release by
[@&#8203;JohnTitor](https://github.com/JohnTitor) in
[rust-lang/flate2-rs#341

#### New Contributors

- [@&#8203;MichaelMcDonnell](https://github.com/MichaelMcDonnell) made
their first contribution in
[rust-lang/flate2-rs#329
- [@&#8203;JohnTitor](https://github.com/JohnTitor) made their first
contribution in
[rust-lang/flate2-rs#331
- [@&#8203;softdevca](https://github.com/softdevca) made their first
contribution in
[rust-lang/flate2-rs#335
- [@&#8203;wcampbell0x2a](https://github.com/wcampbell0x2a) made their
first contribution in
[rust-lang/flate2-rs#336
- [@&#8203;yestyle](https://github.com/yestyle) made their first
contribution in
[rust-lang/flate2-rs#337
- [@&#8203;AntonJMLarsson](https://github.com/AntonJMLarsson) made
their first contribution in
[rust-lang/flate2-rs#330
- [@&#8203;taco-paco](https://github.com/taco-paco) made their first
contribution in
[rust-lang/flate2-rs#322
- [@&#8203;jongiddy](https://github.com/jongiddy) made their first
contribution in
[rust-lang/flate2-rs#325

**Full Changelog**:
rust-lang/flate2-rs@1.0.25...1.0.26

###
[`v1.0.25`](https://github.com/rust-lang/flate2-rs/releases/tag/1.0.25)

[Compare
Source](https://github.com/rust-lang/flate2-rs/compare/1.0.24...1.0.25)

#### What's Changed

- Use SPDX license format and update links by
[@&#8203;atouchet](https://github.com/atouchet) in
[rust-lang/flate2-rs#296
- Bump miniz_oxide to 0.6 by
[@&#8203;paolobarbolini](https://github.com/paolobarbolini) in
[rust-lang/flate2-rs#317
- Prep release 1.0.25 by [@&#8203;thomcc](https://github.com/thomcc)
in
[rust-lang/flate2-rs#327

#### New Contributors

- [@&#8203;atouchet](https://github.com/atouchet) made their first
contribution in
[rust-lang/flate2-rs#296
- [@&#8203;paolobarbolini](https://github.com/paolobarbolini) made
their first contribution in
[rust-lang/flate2-rs#317
- [@&#8203;thomcc](https://github.com/thomcc) made their first
contribution in
[rust-lang/flate2-rs#327

**Full Changelog**:
rust-lang/flate2-rs@1.0.24...1.0.25

</details>

<details>
<summary>matklad/once_cell</summary>

###
[`v1.18.0`](https://github.com/matklad/once_cell/blob/HEAD/CHANGELOG.md#&#8203;1180)

[Compare
Source](https://github.com/matklad/once_cell/compare/v1.17.2...v1.18.0)

- `MSRV` is updated to 1.60.0 to take advantage of `dep:` syntax for
cargo features,
    removing "implementation details" from publicly visible surface.

</details>

<details>
<summary>rust-lang/regex</summary>

###
[`v1.8.4`](https://github.com/rust-lang/regex/blob/HEAD/CHANGELOG.md#&#8203;184-2023-06-05)

[Compare
Source](https://github.com/rust-lang/regex/compare/1.8.3...1.8.4)

\==================
This is a patch release that fixes a bug where `(?-u:\B)` was allowed in
Unicode regexes, despite the fact that the current matching engines can
report
match offsets between the code units of a single UTF-8 encoded
codepoint. That
in turn means that match offsets that split a codepoint could be
reported,
which in turn results in panicking when one uses them to slice a `&str`.

This bug occurred in the transition to `regex 1.8` because the
underlying
syntactical error that prevented this regex from compiling was
intentionally
removed. That's because `(?-u:\B)` will be permitted in Unicode regexes
in
`regex 1.9`, but the matching engines will guarantee to never report
match
offsets that split a codepoint. When the underlying syntactical error
was
removed, no code was added to ensure that `(?-u:\B)` didn't compile in
the
`regex 1.8` transition release. This release, `regex 1.8.4`, adds that
code
such that `Regex::new(r"(?-u:\B)")` returns to the `regex <1.8` behavior
of
not compiling. (A `bytes::Regex` can still of course compile it.)

Bug fixes:

- [BUG #&#8203;1006](https://github.com/rust-lang/regex/issues/1006):
Fix a bug where `(?-u:\B)` was allowed in Unicode regexes, and in turn
could
    lead to match offsets that split a codepoint in `&str`.

</details>

<details>
<summary>pyros2097/rust-embed</summary>

###
[`v6.7.0`](https://github.com/pyros2097/rust-embed/blob/HEAD/changelog.md#&#8203;670---2023-06-09)

- Update `syn` to v2.0
[#&#8203;211](https://github.com/pyrossh/rust-embed/issues/211)

</details>

<details>
<summary>serde-rs/serde</summary>

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

[Compare
Source](https://github.com/serde-rs/serde/compare/v1.0.163...v1.0.164)

- Allowed enum variants to be individually marked as untagged
([#&#8203;2403](https://github.com/serde-rs/serde/issues/2403), thanks
[@&#8203;dewert99](https://github.com/dewert99))

</details>

<details>
<summary>Stebalien/tempfile</summary>

###
[`v3.6.0`](https://github.com/Stebalien/tempfile/blob/HEAD/CHANGELOG.md#&#8203;360)

[Compare
Source](https://github.com/Stebalien/tempfile/compare/v3.5.0...v3.6.0)

-   Update windows-sys to 0.48.
-   Update rustix min version to 0.37.11
- Forward some `NamedTempFile` and `SpooledTempFile` methods to the
underlying `File` object for
    better performance (especially vectorized writes, etc.).
-   Implement `AsFd` and `AsHandle`.
-   Misc documentation fixes and code cleanups.

</details>

<details>
<summary>Microsoft/TypeScript</summary>

###
[`v5.1.3`](https://github.com/microsoft/TypeScript/releases/tag/v5.1.3):
TypeScript 5.1.3

[Compare
Source](https://github.com/Microsoft/TypeScript/compare/v5.0.4...v5.1.3)

For release notes, check out the [release
announcement](https://devblogs.microsoft.com/typescript/announcing-typescript-5-1/).

For the complete list of fixed issues, check out the

- [fixed issues query for Typescript 5.1.0
(Beta)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.1.0%22+is%3Aclosed+).
- [fixed issues query for Typescript 5.1.1
(RC)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.1.1%22+is%3Aclosed+).
- [fixed issues query for Typescript 5.1.3
(Stable)](https://github.com/Microsoft/TypeScript/issues?utf8=%E2%9C%93\&q=milestone%3A%22TypeScript+5.1.3%22+is%3Aclosed+).

Downloads are available on:

- [NuGet
package](https://www.nuget.org/packages/Microsoft.TypeScript.MSBuild)

</details>

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

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

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

#### Crate version bump

-   data-url to 0.3.0
-   percent-encoding to 2.3.0
-   form_urlencoded to 1.2.0
-   idna to 0.4.0
-   url to 2.4.0

#### What's Changed

- url: add the authority method by
[@&#8203;unleashed](https://github.com/unleashed) in
[servo/rust-url#674
- Fix clippy warnings by [@&#8203;nickelc](https://github.com/nickelc)
in
[servo/rust-url#810
- Replace unmaintained/outdated github actions by
[@&#8203;nickelc](https://github.com/nickelc) in
[servo/rust-url#811
- Implement potentially strip spaces for opaque paths by
[@&#8203;CYBAI](https://github.com/CYBAI) in
[servo/rust-url#813
- percent_encoding: faster percent_encode_byte by
[@&#8203;klensy](https://github.com/klensy) in
[servo/rust-url#814
- Update urltestdata.json WPT test cases by
[@&#8203;valenting](https://github.com/valenting) in
[servo/rust-url#819
- Fix anarchist URL where path starts with // by
[@&#8203;qsantos](https://github.com/qsantos) in
[servo/rust-url#817
- Avoid string allocation to get length of port by
[@&#8203;qsantos](https://github.com/qsantos) in
[servo/rust-url#823
- No colon when setting empty password by
[@&#8203;qsantos](https://github.com/qsantos) in
[servo/rust-url#825
- Url is special by [@&#8203;qsantos](https://github.com/qsantos) in
[servo/rust-url#826
- Update msrv to 1.56 to keep up with serde-derive by
[@&#8203;valenting](https://github.com/valenting) in
[servo/rust-url#827
- `no_std` support for `form_urlencoded`, `data-url` and `idna` by
[@&#8203;madsmtm](https://github.com/madsmtm) in
[servo/rust-url#722
- Compile with serde feature on Rust playground and docs.rs by
[@&#8203;dtolnay](https://github.com/dtolnay) in
[servo/rust-url#832
- Fix issues with file drives by
[@&#8203;valenting](https://github.com/valenting) in
[servo/rust-url#839
- Update url to 2.4.0 and release new version by
[@&#8203;valenting](https://github.com/valenting) in
[servo/rust-url#840

#### New Contributors

- [@&#8203;nickelc](https://github.com/nickelc) made their first
contribution in
[servo/rust-url#810
- [@&#8203;CYBAI](https://github.com/CYBAI) made their first
contribution in
[servo/rust-url#813
- [@&#8203;klensy](https://github.com/klensy) made their first
contribution in
[servo/rust-url#814
- [@&#8203;qsantos](https://github.com/qsantos) made their first
contribution in
[servo/rust-url#817
- [@&#8203;madsmtm](https://github.com/madsmtm) made their first
contribution in
[servo/rust-url#722
- [@&#8203;dtolnay](https://github.com/dtolnay) made their first
contribution in
[servo/rust-url#832

**Full Changelog**:
servo/rust-url@v2.3.1...v2.4.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **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://app.renovatebot.com/dashboard#github/apollographql/router).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4xMDUuMiIsInVwZGF0ZWRJblZlciI6IjM1LjExMC4wIiwidGFyZ2V0QnJhbmNoIjoiZGV2In0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: o0Ignition0o <jeremy.lempereur@gmail.com>
bors bot added a commit to jaysonsantos/aur-pkgbuild-updater that referenced this pull request Aug 29, 2023
151: fix(deps): update rust crate camino to 1.1.6 r=renovate[bot] a=renovate[bot]

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

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [camino](https://github.com/camino-rs/camino) | dependencies | minor | `1.0.9` -> `1.1.6` |

---

### Release Notes

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

### [`v1.1.6`](https://github.com/camino-rs/camino/blob/HEAD/CHANGELOG.md#116---2023-07-11)

[Compare Source](https://github.com/camino-rs/camino/compare/camino-1.1.4...camino-1.1.6)

##### Added

-   Implement `Deserialize` for `Box<Utf8Path>`.

### [`v1.1.4`](https://github.com/camino-rs/camino/blob/HEAD/CHANGELOG.md#114---2023-03-09)

[Compare Source](https://github.com/camino-rs/camino/compare/camino-1.1.3...camino-1.1.4)

##### Added

-   Implement `DerefMut` for `Utf8PathBuf` on Rust 1.68 and above.

### [`v1.1.3`](https://github.com/camino-rs/camino/blob/HEAD/CHANGELOG.md#113---2023-02-21)

[Compare Source](https://github.com/camino-rs/camino/compare/camino-1.1.2...camino-1.1.3)

##### Added

-   New method `Utf8DirEntry::into_path` to return an owned `Utf8PathBuf`.

### [`v1.1.2`](https://github.com/camino-rs/camino/blob/HEAD/CHANGELOG.md#112---2022-08-12)

[Compare Source](https://github.com/camino-rs/camino/compare/camino-1.1.1...camino-1.1.2)

##### Added

-   New convenience methods \[`FromPathBufError::into_io_error`] and
    \[`FromPathError::into_io_error`].

### [`v1.1.1`](https://github.com/camino-rs/camino/blob/HEAD/CHANGELOG.md#111---2022-08-12)

[Compare Source](https://github.com/camino-rs/camino/compare/camino-1.1.0...camino-1.1.1)

##### Fixed

-   Fixed a build regression on older nightlies in the 1.63 series
    ([#&#8203;22](https://github.com/camino-rs/camino/issues/22)).
-   Documentation fixes.

### [`v1.1.0`](https://github.com/camino-rs/camino/blob/HEAD/CHANGELOG.md#110---2022-08-11)

[Compare Source](https://github.com/camino-rs/camino/compare/camino-1.0.9...camino-1.1.0)

##### Added

-   New methods, mirroring those in recent versions of Rust:
    -   `Utf8Path::try_exists` checks whether a path exists. Note that while `std::path::Path` only provides this method for Rust 1.58 and above, `camino` backfills the method for all Rust versions it supports.
    -   `Utf8PathBuf::shrink_to` shrinks a `Utf8PathBuf` to a given size. This was added in, and is gated on, Rust 1.56+.
    -   `Utf8PathBuf::try_reserve` and `Utf8PathBuf::try_reserve_exact` implement fallible allocations. These were added in, and are gated on, Rust 1.63+.
-   A number of `#[must_use]` annotations to APIs, mirroring those added to `Path` and `PathBuf` in recent versions of Rust. The minor version bump is due to this change.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

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

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- 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/jaysonsantos/aur-pkgbuild-updater).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi42OC4xIiwidXBkYXRlZEluVmVyIjoiMzYuNjguMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->


153: fix(deps): update rust crate url to 2.4.1 r=renovate[bot] a=renovate[bot]

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

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [url](https://github.com/servo/rust-url) | dependencies | minor | `2.2.2` -> `2.4.1` |

---

### Release Notes

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

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

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

#### What's Changed

-   Move debugger_visualizer tests to separate crate by [`@&#8203;lucacasonato](https://github.com/lucacasonato)` in [servo/rust-url#853
-   Remove obsolete badge references by [`@&#8203;atouchet](https://github.com/atouchet)` in [servo/rust-url#852
-   Fix trailing spaces in scheme / pathname / search setters by [`@&#8203;lucacasonato](https://github.com/lucacasonato)` in [servo/rust-url#848
-   fix: implement std::error::Error for data-url by [`@&#8203;lucacasonato](https://github.com/lucacasonato)` in [servo/rust-url#698
-   Enable the GitHub merge queue by [`@&#8203;mrobinson](https://github.com/mrobinson)` in [servo/rust-url#851
-   Rewrite WPT runner by [`@&#8203;lucacasonato](https://github.com/lucacasonato)` in [servo/rust-url#857
-   Implement std::error::Error for InvalidBase64 by [`@&#8203;lucacasonato](https://github.com/lucacasonato)` in [servo/rust-url#856
-   Add `--generate-link-to-definition` option when building on docs.rs by [`@&#8203;GuillaumeGomez](https://github.com/GuillaumeGomez)` in [servo/rust-url#858
-   Stabilize debugger_visualizer feature by [`@&#8203;lucacasonato](https://github.com/lucacasonato)` in [servo/rust-url#855
-   Update WPT data and expectations by [`@&#8203;lucacasonato](https://github.com/lucacasonato)` in [servo/rust-url#859
-   Fix no_std Support for idna by [`@&#8203;domenukk](https://github.com/domenukk)` in [servo/rust-url#843
-   Fix panic in set_path for file URLs  by [`@&#8203;valenting](https://github.com/valenting)` in [servo/rust-url#865

#### New Contributors

-   [`@&#8203;mrobinson](https://github.com/mrobinson)` made their first contribution in [servo/rust-url#851
-   [`@&#8203;GuillaumeGomez](https://github.com/GuillaumeGomez)` made their first contribution in [servo/rust-url#858
-   [`@&#8203;domenukk](https://github.com/domenukk)` made their first contribution in [servo/rust-url#843

**Full Changelog**: servo/rust-url@v2.4.0...v2.4.1

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

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

#### Crate version bump

-   data-url to 0.3.0
-   percent-encoding to 2.3.0
-   form_urlencoded to 1.2.0
-   idna to 0.4.0
-   url to 2.4.0

#### What's Changed

-   url: add the authority method by [`@&#8203;unleashed](https://github.com/unleashed)` in [servo/rust-url#674
-   Fix clippy warnings by [`@&#8203;nickelc](https://github.com/nickelc)` in [servo/rust-url#810
-   Replace unmaintained/outdated github actions by [`@&#8203;nickelc](https://github.com/nickelc)` in [servo/rust-url#811
-   Implement potentially strip spaces for opaque paths by [`@&#8203;CYBAI](https://github.com/CYBAI)` in [servo/rust-url#813
-   percent_encoding: faster percent_encode_byte by [`@&#8203;klensy](https://github.com/klensy)` in [servo/rust-url#814
-   Update urltestdata.json WPT test cases by [`@&#8203;valenting](https://github.com/valenting)` in [servo/rust-url#819
-   Fix anarchist URL where path starts with // by [`@&#8203;qsantos](https://github.com/qsantos)` in [servo/rust-url#817
-   Avoid string allocation to get length of port by [`@&#8203;qsantos](https://github.com/qsantos)` in [servo/rust-url#823
-   No colon when setting empty password by [`@&#8203;qsantos](https://github.com/qsantos)` in [servo/rust-url#825
-   Url is special by [`@&#8203;qsantos](https://github.com/qsantos)` in [servo/rust-url#826
-   Update msrv to 1.56 to keep up with serde-derive by [`@&#8203;valenting](https://github.com/valenting)` in [servo/rust-url#827
-   `no_std` support for `form_urlencoded`, `data-url` and `idna` by [`@&#8203;madsmtm](https://github.com/madsmtm)` in [servo/rust-url#722
-   Compile with serde feature on Rust playground and docs.rs by [`@&#8203;dtolnay](https://github.com/dtolnay)` in [servo/rust-url#832
-   Fix issues with file drives by [`@&#8203;valenting](https://github.com/valenting)` in [servo/rust-url#839
-   Update url to 2.4.0 and release new version by [`@&#8203;valenting](https://github.com/valenting)` in [servo/rust-url#840

#### New Contributors

-   [`@&#8203;nickelc](https://github.com/nickelc)` made their first contribution in [servo/rust-url#810
-   [`@&#8203;CYBAI](https://github.com/CYBAI)` made their first contribution in [servo/rust-url#813
-   [`@&#8203;klensy](https://github.com/klensy)` made their first contribution in [servo/rust-url#814
-   [`@&#8203;qsantos](https://github.com/qsantos)` made their first contribution in [servo/rust-url#817
-   [`@&#8203;madsmtm](https://github.com/madsmtm)` made their first contribution in [servo/rust-url#722
-   [`@&#8203;dtolnay](https://github.com/dtolnay)` made their first contribution in [servo/rust-url#832

**Full Changelog**: servo/rust-url@v2.3.1...v2.4.0

### [`v2.3.1`](https://github.com/servo/rust-url/compare/v2.3.0...v2.3.1)

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

### [`v2.3.0`](https://github.com/servo/rust-url/compare/v2.2.2...v2.3.0)

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

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

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

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- 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/jaysonsantos/aur-pkgbuild-updater).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi42OC4xIiwidXBkYXRlZEluVmVyIjoiMzYuNjguMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->


Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
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.

Unable to encode + decode URL
3 participants