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

Validate types assigned to LookupContext#formats= #35661

Merged
merged 8 commits into from
Mar 20, 2019

Conversation

jhawthorn
Copy link
Member

This was developed when looking into CVE-2019-5418, but wasn't required to fix the vulnerability.

This is a developer quality of life improvement, to ensure that unknown formats aren't assigned to the LookupContext (which it would previously accept, but wouldn't work 100% correctly due to caching).

This also now avoids mutating the values passed in, removes nils, and makes the formats uniq.

cc @tenderlove @kaspth

This also removes the mutation we were performing on the values being
passed in.
Having a format listed twice had no effect. This is mostly helpful to
avoid an extra format when assigning [:html, "*/*"]
This is a developer quality of life improvement, to ensure that unknown
formats aren't assigned (which it would previously accept, but wouldn't
work 100% correctly due to caching).
@rails-bot rails-bot bot added the actionview label Mar 18, 2019
Copy link
Contributor

@kaspth kaspth left a comment

Choose a reason for hiding this comment

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

I dig it!

actionview/lib/action_view/lookup_context.rb Outdated Show resolved Hide resolved
actionview/test/template/lookup_context_test.rb Outdated Show resolved Hide resolved
actionview/lib/action_view/lookup_context.rb Outdated Show resolved Hide resolved
@rails-bot rails-bot bot added the railties label Mar 18, 2019
@eileencodes eileencodes merged commit d369911 into rails:master Mar 20, 2019
tijmenb added a commit to tijmenb/mail-notify that referenced this pull request Oct 21, 2019
Rails 6.0.0 introduced a check on the `formats` that you can render:

rails/rails#35661

Since that commit, you can only specify the `formats` as symbols, not
strings. The render statement in the actionmailer controller was
updated in the PR as well:

https://github.com/rails/rails/pull/35661/files#diff-32907ca93d739460000
a3f554515caa4

This commit introduces the fix to our controller too. Without this, the
preview page will raise an error:

```
     ArgumentError:
       Invalid formats: "html"
     # ./lib/mail/notify/mailers_controller.rb:28:in
`render_preview_wrapper'
```
tijmenb added a commit to tijmenb/mail-notify that referenced this pull request Oct 21, 2019
Rails 6.0.0 introduced a check on the `formats` that you can render:

rails/rails#35661

Since that commit, you can only specify the `formats` as symbols, not
strings. The render statement in the actionmailer controller was
updated in the PR as well:

https://github.com/rails/rails/pull/35661/files#diff-32907ca93d739460000
a3f554515caa4

This commit introduces the fix to our controller too. Without this, the
preview page will raise an error:

```
     ArgumentError:
       Invalid formats: "html"
     # ./lib/mail/notify/mailers_controller.rb:28:in
`render_preview_wrapper'
```
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants