Support readonly rootfs contains colon
Fix: https://github.com/containers/podman/issues/11913 Signed-off-by: chenkang <kongchen28@gmail.com>
This commit is contained in:
		
							parent
							
								
									ea868933e8
								
							
						
					
					
						commit
						dd5975f3d5
					
				|  | @ -552,10 +552,10 @@ func NewSpecGenerator(arg string, rootfs bool) *SpecGenerator { | |||
| 	if rootfs { | ||||
| 		csc.Rootfs = arg | ||||
| 		// check if rootfs is actually overlayed
 | ||||
| 		parts := strings.SplitN(csc.Rootfs, ":", 2) | ||||
| 		if len(parts) > 1 && parts[1] == "O" { | ||||
| 		lastColonIndex := strings.LastIndex(csc.Rootfs, ":") | ||||
| 		if lastColonIndex != -1 && lastColonIndex+1 < len(csc.Rootfs) && csc.Rootfs[lastColonIndex+1:] == "O" { | ||||
| 			csc.RootfsOverlay = true | ||||
| 			csc.Rootfs = parts[0] | ||||
| 			csc.Rootfs = csc.Rootfs[:lastColonIndex] | ||||
| 		} | ||||
| 	} else { | ||||
| 		csc.Image = arg | ||||
|  |  | |||
|  | @ -0,0 +1,25 @@ | |||
| package specgen | ||||
| 
 | ||||
| import ( | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"github.com/stretchr/testify/assert" | ||||
| ) | ||||
| 
 | ||||
| func TestNewSpecGeneratorWithRootfs(t *testing.T) { | ||||
| 	tests := []struct { | ||||
| 		rootfs                string | ||||
| 		expectedRootfsOverlay bool | ||||
| 		expectedRootfs        string | ||||
| 	}{ | ||||
| 		{"/root/a:b:O", true, "/root/a:b"}, | ||||
| 		{"/root/a:b/c:O", true, "/root/a:b/c"}, | ||||
| 		{"/root/a:b/c:", false, "/root/a:b/c:"}, | ||||
| 		{"/root/a/b", false, "/root/a/b"}, | ||||
| 	} | ||||
| 	for _, args := range tests { | ||||
| 		val := NewSpecGenerator(args.rootfs, true) | ||||
| 		assert.Equal(t, val.RootfsOverlay, args.rootfs) | ||||
| 		assert.Equal(t, val.Rootfs, args.rootfs) | ||||
| 	} | ||||
| } | ||||
		Loading…
	
		Reference in New Issue