33 lines
736 B
Go
33 lines
736 B
Go
//go:build windows
|
|||
|
|
|
||
|
|
package files
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"errors"
|
||
|
|
"os"
|
||
|
|
"syscall"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestInstanceDataRemoverRejectsWindowsReparsePoint(t *testing.T) {
|
||
|
|
called := false
|
||
|
|
remover := newInstanceDataRemover(func(string) (os.FileInfo, error) {
|
||
|
|
return fakeFileInfo{
|
||
|
|
mode: os.ModeDir,
|
||
|
|
sys: &syscall.Win32FileAttributeData{FileAttributes: syscall.FILE_ATTRIBUTE_REPARSE_POINT},
|
||
|
|
}, nil
|
||
|
|
}, func(string) error {
|
||
|
|
called = true
|
||
|
|
return nil
|
||
|
|
})
|
||
|
|
|
||
|
|
err := remover.RemoveInstanceData(context.Background(), `C:\profiles\junction`)
|
||
|
|
if !errors.Is(err, ErrUnsafeInstanceDataDirectory) {
|
||
|
|
t.Fatalf("RemoveInstanceData() error = %v, want unsafe directory", err)
|
||
|
|
}
|
||
|
|
if called {
|
||
|
|
t.Fatal("reparse point reached removal")
|
||
|
|
}
|
||
|
|
}
|