Skip to content

Commit 5cc8107

Browse files
Potential fix for code scanning alert no. 1: Prototype-polluting assignment
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
1 parent 11cedbf commit 5cc8107

1 file changed

Lines changed: 14 additions & 8 deletions

File tree

packages/core/src/DatumBuilders/DatumBuilder.NftCheck.class.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,21 +17,27 @@ export interface IDatumBuilderNftCheckArgs {
1717
*/
1818
export class DatumBuilderNftCheck extends DatumBuilderCondition {
1919
public buildConditionDatum(args: IDatumBuilderNftCheckArgs): Core.PlutusData {
20-
const asset_map: { [policy_id: string]: { [assetName: string]: bigint } } =
21-
{};
20+
// Use Map objects to prevent prototype pollution
21+
const asset_map: Map<string, Map<string, bigint>> = new Map();
2222
args.value.forEach((asset) => {
2323
const [policy_id, asset_name] = asset.metadata.assetId.split(".");
24-
if (!(policy_id in asset_map)) {
25-
asset_map[policy_id] = {};
24+
if (!asset_map.has(policy_id)) {
25+
asset_map.set(policy_id, new Map());
2626
}
27-
if (!(asset_name in asset_map[policy_id])) {
28-
asset_map[policy_id][asset_name] = asset.amount;
27+
const assets_for_policy = asset_map.get(policy_id)!;
28+
if (!assets_for_policy.has(asset_name)) {
29+
assets_for_policy.set(asset_name, asset.amount);
2930
} else {
30-
asset_map[policy_id][asset_name] += asset.amount;
31+
assets_for_policy.set(asset_name, assets_for_policy.get(asset_name)! + asset.amount);
3132
}
3233
});
34+
// Convert Map back to plain object for datum construction
35+
const object_asset_map: { [policy_id: string]: { [assetName: string]: bigint } } = {};
36+
for (const [policy_id, assets_map] of asset_map.entries()) {
37+
object_asset_map[policy_id] = Object.fromEntries(assets_map);
38+
}
3339
const datum: NftCheckTypes.NftCheckDatum = {
34-
value: asset_map,
40+
value: object_asset_map,
3541
check: args.check,
3642
};
3743

0 commit comments

Comments
 (0)