Fix declared server config file reads

This commit is contained in:
npc0-hue
2026-09-21 10:05:50 +08:00
parent b481b1b798
commit 20008b4043
16 changed files with 166 additions and 33 deletions
+1 -1
View File
@@ -1949,7 +1949,7 @@ func validatePluginFileWorkspace(prefix string, workspace domain.PluginFileWorks
}
for i, item := range workspace.Files {
field := fmt.Sprintf("%s.files[%d]", prefix, i)
if !validDistributionLogicalKey(item.Key) || !directories[item.DirectoryKey] || item.Label == "" || !oneOf(item.Kind, "config", "log") || (item.Kind == "log" && item.StreamKey == "") {
if !validDistributionLogicalKey(item.Key) || !directories[item.DirectoryKey] || item.Label == "" || !oneOf(item.Kind, "config", "log") || (item.Kind == "log" && item.StreamKey == "") || (item.TargetKey != "" && len(validateSafeRelativeRuntimePath(field+".targetKey", item.TargetKey)) > 0) {
violations = append(violations, field+" is invalid")
}
if _, exists := files[item.Key]; exists {
+5
View File
@@ -47,6 +47,11 @@ func TestValidateGamePluginManifestRegistrationValidatesLogicalFileWorkspace(t *
if err := ValidateGamePluginManifestRegistration(registration); err != nil {
t.Fatalf("expected safe logical file workspace: %v", err)
}
registration.Manifest.FileWorkspace.Files[0].TargetKey = "../server-settings.ini"
if err := ValidateGamePluginManifestRegistration(registration); err == nil {
t.Fatal("expected unsafe file target reference to fail")
}
registration.Manifest.FileWorkspace.Files[0].TargetKey = "SCUM/Saved/Config/WindowsServer/ServerSettings.ini"
registration.Manifest.FileWorkspace.Files[0].DirectoryKey = "../host"
if err := ValidateGamePluginManifestRegistration(registration); err == nil {
t.Fatal("expected unsafe logical directory reference to fail")