Skip to content

Commit

Permalink
Guard against prototype extended arrays (#769)
Browse files Browse the repository at this point in the history
Frameworks like Ember extend the array type with
additional properties. Although they can be
disabled, it would remove some helpful
features. In the case, the iteration through the
additional properties by the execute validator
code can result in `undefined` being passed as the
third argument.

This commit guards against that case.

Ref: https://guides.emberjs.com/release/configuring-ember/disabling-prototype-extensions/
  • Loading branch information
davidenglishmusic authored and tagliala committed Sep 21, 2019
1 parent 6ce32ad commit f3b6d13
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 0 deletions.
4 changes: 4 additions & 0 deletions dist/client-side-validations.esm.js
Original file line number Diff line number Diff line change
Expand Up @@ -676,6 +676,10 @@ var afterValidate = function afterValidate(element) {

var executeValidator = function executeValidator(validatorFunctions, validatorFunction, validatorOptions, element) {
for (var validatorOption in validatorOptions) {
if (!validatorOptions[validatorOption]) {
continue;
}

var message = validatorFunction.call(validatorFunctions, element, validatorOptions[validatorOption]);

if (message) {
Expand Down
4 changes: 4 additions & 0 deletions dist/client-side-validations.js
Original file line number Diff line number Diff line change
Expand Up @@ -682,6 +682,10 @@

var executeValidator = function executeValidator(validatorFunctions, validatorFunction, validatorOptions, element) {
for (var validatorOption in validatorOptions) {
if (!validatorOptions[validatorOption]) {
continue;
}

var message = validatorFunction.call(validatorFunctions, element, validatorOptions[validatorOption]);

if (message) {
Expand Down
4 changes: 4 additions & 0 deletions src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,10 @@ const afterValidate = (element) => {

const executeValidator = (validatorFunctions, validatorFunction, validatorOptions, element) => {
for (const validatorOption in validatorOptions) {
if (!validatorOptions[validatorOption]) {
continue
}

const message = validatorFunction.call(validatorFunctions, element, validatorOptions[validatorOption])

if (message) {
Expand Down
4 changes: 4 additions & 0 deletions vendor/assets/javascripts/rails.validations.js
Original file line number Diff line number Diff line change
Expand Up @@ -682,6 +682,10 @@

var executeValidator = function executeValidator(validatorFunctions, validatorFunction, validatorOptions, element) {
for (var validatorOption in validatorOptions) {
if (!validatorOptions[validatorOption]) {
continue;
}

var message = validatorFunction.call(validatorFunctions, element, validatorOptions[validatorOption]);

if (message) {
Expand Down

0 comments on commit f3b6d13

Please sign in to comment.