Skip to content

Commit

Permalink
[Fix] no-unknown-property: use a better regex to avoid a crash
Browse files Browse the repository at this point in the history
Fixes #3666
  • Loading branch information
ljharb committed Dec 14, 2023
1 parent b95a059 commit 96af875
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 1 deletion.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Expand Up @@ -17,6 +17,7 @@ This change log adheres to standards from [Keep a CHANGELOG](https://keepachange
* [`jsx-no-leaked-render`]: preserve RHS parens for multiline jsx elements while fixing ([#3623][] @akulsr0)
* [`jsx-key`]: detect conditional returns ([#3630][] @yialo)
* [`jsx-newline`]: prevent a crash when `allowMultilines ([#3633][] @ljharb)
* [`no-unknown-property`]: use a better regex to avoid a crash ([#3666][] @ljharb @SCH227)

### Changed
* [Refactor] `propTypes`: extract type params to var ([#3634][] @HenryBrown0)
Expand All @@ -25,6 +26,7 @@ This change log adheres to standards from [Keep a CHANGELOG](https://keepachange
* [Refactor] [`jsx-props-no-multi-spaces`]: extract type parameters to var ([#3634][] @HenryBrown0)
* [Docs] [`jsx-key`]: fix correct example ([#3656][] @developer-bandi)

[#3666]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3666
[#3662]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3662
[#3656]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3656
[#3654]: https://github.com/jsx-eslint/eslint-plugin-react/pull/3654
Expand Down
2 changes: 1 addition & 1 deletion lib/rules/no-unknown-property.js
Expand Up @@ -429,7 +429,7 @@ function normalizeAttributeCase(name) {
* @returns {boolean} Result
*/
function isValidDataAttribute(name) {
return /^data(-[^:]*)*$/.test(name) && !/^data-xml/i.test(name);
return !/^data-xml/i.test(name) && /^data(-?[^:]*)$/.test(name);
}

/**
Expand Down
23 changes: 23 additions & 0 deletions tests/lib/rules/no-unknown-property.js
Expand Up @@ -162,6 +162,13 @@ ruleTester.run('no-unknown-property', rule, {
// fbs
{ code: '<fbs desc="foo" doNotExtract />;' },
{ code: '<math displaystyle="true" />;' },
{
code: `
<div className="App" data-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash="customValue">
Hello, world!
</div>
`,
},
]),
invalid: parsers.all([
{
Expand Down Expand Up @@ -645,5 +652,21 @@ ruleTester.run('no-unknown-property', rule, {
},
],
},
{
code: `
<div className="App" data-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash:c="customValue">
Hello, world!
</div>
`,
features: ['no-ts'],
errors: [
{
messageId: 'unknownProp',
data: {
name: 'data-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash-crash:c',
},
},
],
},
]),
});

0 comments on commit 96af875

Please sign in to comment.