mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-09-19 09:40:12 +00:00
fix(agentcompat): root filesystem guard reads
Co-authored-by: naiba/CloudCode <hi+cloudcode@nai.ba>
This commit is contained in:
@@ -31,7 +31,13 @@ func verifyMCPFilesystemPathGuards(ctx context.Context, assertions *AssertionSet
|
|||||||
if err := os.Symlink(symlinkFinalTarget, filepath.Join(filesystem.root.Absolute(), "linked-final")); err != nil {
|
if err := os.Symlink(symlinkFinalTarget, filepath.Join(filesystem.root.Absolute(), "linked-final")); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
before, err := filesystemTargetHashes(directTarget, symlinkParentTarget, symlinkFinalTarget)
|
root, err := os.OpenRoot(fixtureParent)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer root.Close()
|
||||||
|
targetNames := []string{"outside-sentinel", "outside-directory/parent-target.txt", "final-target.txt"}
|
||||||
|
before, err := filesystemTargetHashes(root, targetNames...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -64,7 +70,7 @@ func verifyMCPFilesystemPathGuards(ctx context.Context, assertions *AssertionSet
|
|||||||
}
|
}
|
||||||
requestsAfter := filesystem.client.RequestCount()
|
requestsAfter := filesystem.client.RequestCount()
|
||||||
dispatched := int64(requestsAfter) - int64(requestsBefore)
|
dispatched := int64(requestsAfter) - int64(requestsBefore)
|
||||||
after, err := filesystemTargetHashes(directTarget, symlinkParentTarget, symlinkFinalTarget)
|
after, err := filesystemTargetHashes(root, targetNames...)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -79,10 +85,10 @@ func verifyMCPFilesystemPathGuards(ctx context.Context, assertions *AssertionSet
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func filesystemTargetHashes(paths ...string) ([32]byte, error) {
|
func filesystemTargetHashes(root *os.Root, names ...string) ([32]byte, error) {
|
||||||
hash := sha256.New()
|
hash := sha256.New()
|
||||||
for _, path := range paths {
|
for _, name := range names {
|
||||||
content, err := os.ReadFile(path)
|
content, err := root.ReadFile(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return [32]byte{}, err
|
return [32]byte{}, err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user