From 4f3f55f6482491eb20a7d8d68c4b53612333c296 Mon Sep 17 00:00:00 2001 From: Simone Margaritelli Date: Mon, 13 Jun 2022 16:55:41 +0200 Subject: [PATCH] fix: fs related scripting functions will now resolve paths containing special characters --- session/script_builtin_runtime.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/session/script_builtin_runtime.go b/session/script_builtin_runtime.go index 2c3d0e8f..c39b4651 100644 --- a/session/script_builtin_runtime.go +++ b/session/script_builtin_runtime.go @@ -107,9 +107,9 @@ func jsSaveJSONFunc(call otto.FunctionCall) otto.Value { } obj := argv[0] - fileName := argv[1].String() - - if exp, err := obj.Export(); err != nil { + if fileName, err := fs.Expand(argv[1].String()); err != nil { + return js.ReportError("can't expand '%s': %v", fileName, err) + } else if exp, err := obj.Export(); err != nil { return js.ReportError("error exporting object: %v", err) } else if raw, err := json.Marshal(exp); err != nil { return js.ReportError("error serializing object: %v", err) @@ -129,9 +129,11 @@ func jsLoadJSONFunc(call otto.FunctionCall) otto.Value { return js.ReportError("loadJSON accepts one string argument") } - fileName := argv[0].String() var obj interface{} - if rawData, err := ioutil.ReadFile(fileName); err != nil { + + if fileName, err := fs.Expand(argv[0].String()); err != nil { + return js.ReportError("can't expand '%s': %v", fileName, err) + } else if rawData, err := ioutil.ReadFile(fileName); err != nil { return js.ReportError("can't read '%s': %v", fileName, err) } else if err = json.Unmarshal(rawData, &obj); err != nil { return js.ReportError("can't parse '%s': %v", fileName, err) @@ -149,10 +151,9 @@ func jsFileExistsFunc(call otto.FunctionCall) otto.Value { return js.ReportError("fileExists accepts one string argument") } else if argv[0].IsString() == false { return js.ReportError("fileExists accepts one string argument") - } - - fileName := argv[0].String() - if fs.Exists(fileName) { + } else if fileName, err := fs.Expand(argv[0].String()); err != nil { + return js.ReportError("can't expand '%s': %v", fileName, err) + } else if fs.Exists(fileName) { return otto.TrueValue() }