-
-
Notifications
You must be signed in to change notification settings - Fork 166
feat: add sdk.params
option
#1927
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
base: main
Are you sure you want to change the base?
Conversation
|
🦋 Changeset detectedLatest commit: 0cc8d17 The changes in this PR will be included in the next version bump. This PR includes changesets to release 18 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
if (config.key) { | ||
const field = map.get(config.key)!; | ||
const name = field.map || config.key; | ||
(params[field.in] as Record<string, unknown>)[name] = arg; |
Check warning
Code scanning / CodeQL
Prototype-polluting assignment Medium
library input
Show autofix suggestion
Hide autofix suggestion
Copilot Autofix
AI 20 days ago
To fix the issue, we need to ensure that untrusted keys like __proto__
, constructor
, and prototype
cannot be used as property names in the params
object. This can be achieved by validating the name
variable before assigning it to the params
object. If the name
variable contains a dangerous key, the assignment should be skipped or an error should be thrown.
The best way to implement this fix is to add a validation step before the assignment on line 102. We will check if name
is one of the dangerous keys (__proto__
, constructor
, or prototype
) and skip the assignment if it is.
-
Copy modified lines R102-R104
@@ -101,2 +101,5 @@ | ||
const name = field.map || config.key; | ||
if (name === '__proto__' || name === 'constructor' || name === 'prototype') { | ||
continue; // Skip dangerous keys | ||
} | ||
(params[field.in] as Record<string, unknown>)[name] = arg; |
|
||
if (field) { | ||
const name = field.map || key; | ||
(params[field.in] as Record<string, unknown>)[name] = value; |
Check warning
Code scanning / CodeQL
Prototype-polluting assignment Medium
library input
facb3c6
to
b345d9b
Compare
Related to #926
TODO
headers
toparams
never
(need to useOmitNever
)params
aren't currently used at all, and there's a mismatch with required/optional arguments due to above)