Bump runc to 1b8a1eeec3f337ab5d94f28980
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
		
							
								
								
									
										112
									
								
								vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								vendor/github.com/opencontainers/runc/libcontainer/utils/utils.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,112 @@ | ||||
| package utils | ||||
|  | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| 	"io" | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"strings" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"golang.org/x/sys/unix" | ||||
| ) | ||||
|  | ||||
| const ( | ||||
| 	exitSignalOffset = 128 | ||||
| ) | ||||
|  | ||||
| // ResolveRootfs ensures that the current working directory is | ||||
| // not a symlink and returns the absolute path to the rootfs | ||||
| func ResolveRootfs(uncleanRootfs string) (string, error) { | ||||
| 	rootfs, err := filepath.Abs(uncleanRootfs) | ||||
| 	if err != nil { | ||||
| 		return "", err | ||||
| 	} | ||||
| 	return filepath.EvalSymlinks(rootfs) | ||||
| } | ||||
|  | ||||
| // ExitStatus returns the correct exit status for a process based on if it | ||||
| // was signaled or exited cleanly | ||||
| func ExitStatus(status unix.WaitStatus) int { | ||||
| 	if status.Signaled() { | ||||
| 		return exitSignalOffset + int(status.Signal()) | ||||
| 	} | ||||
| 	return status.ExitStatus() | ||||
| } | ||||
|  | ||||
| // WriteJSON writes the provided struct v to w using standard json marshaling | ||||
| func WriteJSON(w io.Writer, v interface{}) error { | ||||
| 	data, err := json.Marshal(v) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	_, err = w.Write(data) | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| // CleanPath makes a path safe for use with filepath.Join. This is done by not | ||||
| // only cleaning the path, but also (if the path is relative) adding a leading | ||||
| // '/' and cleaning it (then removing the leading '/'). This ensures that a | ||||
| // path resulting from prepending another path will always resolve to lexically | ||||
| // be a subdirectory of the prefixed path. This is all done lexically, so paths | ||||
| // that include symlinks won't be safe as a result of using CleanPath. | ||||
| func CleanPath(path string) string { | ||||
| 	// Deal with empty strings nicely. | ||||
| 	if path == "" { | ||||
| 		return "" | ||||
| 	} | ||||
|  | ||||
| 	// Ensure that all paths are cleaned (especially problematic ones like | ||||
| 	// "/../../../../../" which can cause lots of issues). | ||||
| 	path = filepath.Clean(path) | ||||
|  | ||||
| 	// If the path isn't absolute, we need to do more processing to fix paths | ||||
| 	// such as "../../../../<etc>/some/path". We also shouldn't convert absolute | ||||
| 	// paths to relative ones. | ||||
| 	if !filepath.IsAbs(path) { | ||||
| 		path = filepath.Clean(string(os.PathSeparator) + path) | ||||
| 		// This can't fail, as (by definition) all paths are relative to root. | ||||
| 		path, _ = filepath.Rel(string(os.PathSeparator), path) | ||||
| 	} | ||||
|  | ||||
| 	// Clean the path again for good measure. | ||||
| 	return filepath.Clean(path) | ||||
| } | ||||
|  | ||||
| // SearchLabels searches a list of key-value pairs for the provided key and | ||||
| // returns the corresponding value. The pairs must be separated with '='. | ||||
| func SearchLabels(labels []string, query string) string { | ||||
| 	for _, l := range labels { | ||||
| 		parts := strings.SplitN(l, "=", 2) | ||||
| 		if len(parts) < 2 { | ||||
| 			continue | ||||
| 		} | ||||
| 		if parts[0] == query { | ||||
| 			return parts[1] | ||||
| 		} | ||||
| 	} | ||||
| 	return "" | ||||
| } | ||||
|  | ||||
| // Annotations returns the bundle path and user defined annotations from the | ||||
| // libcontainer state.  We need to remove the bundle because that is a label | ||||
| // added by libcontainer. | ||||
| func Annotations(labels []string) (bundle string, userAnnotations map[string]string) { | ||||
| 	userAnnotations = make(map[string]string) | ||||
| 	for _, l := range labels { | ||||
| 		parts := strings.SplitN(l, "=", 2) | ||||
| 		if len(parts) < 2 { | ||||
| 			continue | ||||
| 		} | ||||
| 		if parts[0] == "bundle" { | ||||
| 			bundle = parts[1] | ||||
| 		} else { | ||||
| 			userAnnotations[parts[0]] = parts[1] | ||||
| 		} | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func GetIntSize() int { | ||||
| 	return int(unsafe.Sizeof(1)) | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 Michael Crosby
					Michael Crosby