Merge pull request #109 from gmkurtzer/bind_escape
Container exec bind escape
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user