fix(runtime): improve permission descriptor validation (#14676)

This commit improves the permission descriptor validation by
explicitly checking for object types and using optional
chaining when creating error messages in case the descriptor
is not an object.

Fixes: https://github.com/denoland/deno/issues/14675
This commit is contained in:
Colin Ihrig 2022-05-19 17:45:09 -04:00 committed by GitHub
parent 4daf1bb81a
commit 0a96cb62a8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 4 deletions

View file

@ -149,7 +149,7 @@
* @returns {desc is Deno.PermissionDescriptor}
*/
function isValidDescriptor(desc) {
return desc && desc !== null &&
return typeof desc === "object" && desc !== null &&
ArrayPrototypeIncludes(permissionNames, desc.name);
}
@ -164,7 +164,8 @@
if (!isValidDescriptor(desc)) {
return PromiseReject(
new TypeError(
`The provided value "${desc.name}" is not a valid permission name.`,
`The provided value "${desc
?.name}" is not a valid permission name.`,
),
);
}
@ -185,7 +186,8 @@
if (!isValidDescriptor(desc)) {
return PromiseReject(
new TypeError(
`The provided value "${desc.name}" is not a valid permission name.`,
`The provided value "${desc
?.name}" is not a valid permission name.`,
),
);
}
@ -204,7 +206,8 @@
if (!isValidDescriptor(desc)) {
return PromiseReject(
new TypeError(
`The provided value "${desc.name}" is not a valid permission name.`,
`The provided value "${desc
?.name}" is not a valid permission name.`,
),
);
}