Skip to content

Commit 3c7131d

Browse files
authored
Merge pull request #7119 from NomicFoundation/popescuoctavian/fsPermissions
build: upgrade to @nomicfoundation/edr v0.12.0-next.4
2 parents 4255874 + e98ded3 commit 3c7131d

File tree

7 files changed

+96
-59
lines changed

7 files changed

+96
-59
lines changed

.changeset/pretty-dodos-flow.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"hardhat": minor
3+
---
4+
5+
Upgraded EDR dependency to @nomicfoundation/edr v0.12.0-next.4, which changes the file system permission config interface for Solidity tests to mitigate EVM sandbox escape through cheatcodes.

.github/config/regression-tests.yml

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ repositories:
136136
"maxTestRejects": 1000000
137137
},
138138
"fsPermissions": {
139-
"read": [
139+
"readDirectory": [
140140
"./out-optimized"
141141
]
142142
},
@@ -230,11 +230,11 @@ repositories:
230230
"runs": 1000
231231
},
232232
"fsPermissions": {
233-
"read": [
233+
"readDirectory": [
234234
"./optimized-out",
235235
"./reference-out"
236236
],
237-
"write": [
237+
"writeFile": [
238238
"./call-metrics.txt",
239239
"./mutation-metrics.txt",
240240
"./assume-metrics.txt",
@@ -357,7 +357,7 @@ repositories:
357357
"solidityTest": {
358358
"ffi": true,
359359
"fsPermissions": {
360-
"readWrite": [
360+
"dangerouslyReadWriteDirectory": [
361361
".forge-snapshots/"
362362
]
363363
}
@@ -420,7 +420,7 @@ repositories:
420420
"solidityTest": {
421421
"blockGasLimit": BigInt(100000000),
422422
"fsPermissions": {
423-
"read": [
423+
"readDirectory": [
424424
"./test/data"
425425
]
426426
},
@@ -477,7 +477,7 @@ repositories:
477477
},
478478
"solidityTest": {
479479
"fsPermissions": {
480-
"readWrite": [
480+
"dangerouslyReadWriteDirectory": [
481481
"./"
482482
]
483483
},
@@ -603,10 +603,10 @@ repositories:
603603
"solidityTest": {
604604
"ffi": true,
605605
"fsPermissions": {
606-
"readWrite": [
606+
"dangerouslyReadWriteDirectory": [
607607
".forge-snapshots/"
608608
],
609-
"read": [
609+
"readDirectory": [
610610
"./foundry-out",
611611
"./script/config",
612612
"./test/pool-cl/bin",
@@ -692,7 +692,7 @@ repositories:
692692
"runs": 100
693693
},
694694
"fsPermissions": {
695-
"readWrite": [
695+
"dangerouslyReadWriteDirectory": [
696696
"./"
697697
]
698698
},
@@ -754,11 +754,13 @@ repositories:
754754
},
755755
"solidityTest": {
756756
"fsPermissions": {
757-
"read": [
758-
"./out-optimized",
757+
"readDirectory": [
758+
"./out-optimized"
759+
],
760+
"readFile": [
759761
"package.json"
760762
],
761-
"readWrite": [
763+
"dangerouslyReadWriteDirectory": [
762764
"./benchmark/results",
763765
"./script/"
764766
]
@@ -871,10 +873,12 @@ repositories:
871873
"blockTimestamp": BigInt(1714518000),
872874
"fsPermissions": {
873875
"read": [
874-
"./out-optimized",
876+
"./out-optimized"
877+
],
878+
"readFile": [
875879
"package.json"
876880
],
877-
"readWrite": [
881+
"dangerouslyReadWriteDirectory": [
878882
"./benchmark/results",
879883
"./cache"
880884
]

pnpm-lock.yaml

Lines changed: 35 additions & 35 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

v-next/hardhat/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@
8686
"typescript": "~5.8.0"
8787
},
8888
"dependencies": {
89-
"@nomicfoundation/edr": "0.12.0-next.3",
89+
"@nomicfoundation/edr": "0.12.0-next.4",
9090
"@nomicfoundation/hardhat-errors": "workspace:^3.0.0-next.26",
9191
"@nomicfoundation/hardhat-utils": "workspace:^3.0.0-next.26",
9292
"@nomicfoundation/hardhat-zod-utils": "workspace:^3.0.0-next.26",

v-next/hardhat/src/internal/builtin-plugins/solidity-test/config.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,12 @@ const solidityTestUserConfigType = z.object({
1616
timeout: z.number().optional(),
1717
fsPermissions: z
1818
.object({
19-
readWrite: z.array(z.string()).optional(),
20-
read: z.array(z.string()).optional(),
21-
write: z.array(z.string()).optional(),
19+
readWriteFile: z.array(z.string()).optional(),
20+
readFile: z.array(z.string()).optional(),
21+
writeFile: z.array(z.string()).optional(),
22+
dangerouslyReadWriteDirectory: z.array(z.string()).optional(),
23+
readDirectory: z.array(z.string()).optional(),
24+
dangerouslyWriteDirectory: z.array(z.string()).optional(),
2225
})
2326
.optional(),
2427
isolate: z.boolean().optional(),

v-next/hardhat/src/internal/builtin-plugins/solidity-test/helpers.ts

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
l1GenesisState,
1616
l1HardforkLatest,
1717
IncludeTraces,
18+
FsAccessPermission,
1819
} from "@nomicfoundation/edr";
1920
import { hexStringToBytes } from "@nomicfoundation/hardhat-utils/hex";
2021

@@ -39,9 +40,30 @@ export function solidityTestConfigToSolidityTestRunnerConfigArgs(
3940
testPattern?: string,
4041
): SolidityTestRunnerConfigArgs {
4142
const fsPermissions: PathPermission[] | undefined = [
42-
config.fsPermissions?.readWrite?.map((p) => ({ access: 0, path: p })) ?? [],
43-
config.fsPermissions?.read?.map((p) => ({ access: 0, path: p })) ?? [],
44-
config.fsPermissions?.write?.map((p) => ({ access: 0, path: p })) ?? [],
43+
config.fsPermissions?.readWriteFile?.map((p) => ({
44+
access: FsAccessPermission.ReadWriteFile,
45+
path: p,
46+
})) ?? [],
47+
config.fsPermissions?.readFile?.map((p) => ({
48+
access: FsAccessPermission.ReadFile,
49+
path: p,
50+
})) ?? [],
51+
config.fsPermissions?.writeFile?.map((p) => ({
52+
access: FsAccessPermission.WriteFile,
53+
path: p,
54+
})) ?? [],
55+
config.fsPermissions?.dangerouslyReadWriteDirectory?.map((p) => ({
56+
access: FsAccessPermission.DangerouslyReadWriteDirectory,
57+
path: p,
58+
})) ?? [],
59+
config.fsPermissions?.readDirectory?.map((p) => ({
60+
access: FsAccessPermission.ReadDirectory,
61+
path: p,
62+
})) ?? [],
63+
config.fsPermissions?.dangerouslyWriteDirectory?.map((p) => ({
64+
access: FsAccessPermission.DangerouslyWriteDirectory,
65+
path: p,
66+
})) ?? [],
4567
].flat(1);
4668

4769
const sender: Buffer | undefined =

v-next/hardhat/src/internal/builtin-plugins/solidity-test/type-extensions.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,12 @@ declare module "../../../types/test.js" {
1414
export interface SolidityTestUserConfig {
1515
timeout?: number;
1616
fsPermissions?: {
17-
readWrite?: string[];
18-
read?: string[];
19-
write?: string[];
17+
readWriteFile?: string[];
18+
readFile?: string[];
19+
writeFile?: string[];
20+
dangerouslyReadWriteDirectory?: string[];
21+
readDirectory?: string[];
22+
dangerouslyWriteDirectory?: string[];
2023
};
2124
isolate?: boolean;
2225
ffi?: boolean;

0 commit comments

Comments
 (0)