Merge pull request #109 from gmkurtzer/bind_escape

Container exec bind escape
This commit is contained in:
Gregory M. Kurtzer
2021-09-02 21:57:53 -07:00
committed by GitHub
2 changed files with 44 additions and 2 deletions

View File

@@ -7,10 +7,10 @@ import (
"fmt"
"os"
"path"
"strings"
"syscall"
"github.com/hpcng/warewulf/internal/pkg/container"
"github.com/hpcng/warewulf/internal/pkg/util"
"github.com/hpcng/warewulf/internal/pkg/wwlog"
"github.com/spf13/cobra"
)
@@ -38,7 +38,7 @@ func CobraRunE(cmd *cobra.Command, args []string) error {
var source string
var dest string
bind := strings.Split(b, ":")
bind := util.SplitValidPaths(b, ":")
source = bind[0]
if len(bind) == 1 {

View File

@@ -315,3 +315,45 @@ func CopyUIDGID(source string, dest string) error {
err = os.Chown(dest, UID, GID)
return err
}
func SplitEscaped(input, delim, escape string) []string {
var ret []string
str := ""
for i := 1; i < len(input); i++ {
str += string(input[i-1])
if string(input[i]) == delim && string(input[i-1]) != escape {
i++
ret = append(ret, str)
str = ""
}
if string(input[i]) == escape {
i++
}
}
str += string(input[len(input)-1])
ret = append(ret, str)
return (ret)
}
func SplitValidPaths(input, delim string) []string {
var ret []string
str := ""
for i := 1; i < len(input); i++ {
str += string(input[i-1])
if (string(input[i]) == delim && string(input[i-1]) != "\\") && (IsDir(str) || IsFile(str)) {
i++
ret = append(ret, str)
str = ""
}
if string(input[i]) == "\\" {
i++
}
}
str += string(input[len(input)-1])
ret = append(ret, str)
return (ret)
}