cli/container: Don't ignore error when parsing volume spec

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
This commit is contained in:
Paweł Gronowski 2023-07-11 17:48:35 +02:00
parent df04aca5d2
commit fe7afb700f
No known key found for this signature in database
GPG Key ID: B85EFCFE26DEF92A
3 changed files with 25 additions and 1 deletions

View File

@ -358,7 +358,10 @@ func parse(flags *pflag.FlagSet, copts *containerOptions, serverOS string) (*con
volumes := copts.volumes.GetMap() volumes := copts.volumes.GetMap()
// add any bind targets to the list of container volumes // add any bind targets to the list of container volumes
for bind := range copts.volumes.GetMap() { for bind := range copts.volumes.GetMap() {
parsed, _ := loader.ParseVolume(bind) parsed, err := loader.ParseVolume(bind)
if err != nil {
return nil, err
}
if parsed.Source != "" { if parsed.Source != "" {
toBind := bind toBind := bind

View File

@ -223,3 +223,8 @@ func TestParseVolumeInvalidSections(t *testing.T) {
_, err := ParseVolume("/foo::rw") _, err := ParseVolume("/foo::rw")
assert.ErrorContains(t, err, "invalid spec") assert.ErrorContains(t, err, "invalid spec")
} }
func TestParseVolumeWithEmptySource(t *testing.T) {
_, err := ParseVolume(":/vol")
assert.ErrorContains(t, err, "empty section between colons")
}

View File

@ -101,3 +101,19 @@ func TestTrustedCreateFromBadTrustServer(t *testing.T) {
Err: "could not rotate trust to a new trusted root", Err: "could not rotate trust to a new trusted root",
}) })
} }
func TestCreateWithEmptySourceVolume(t *testing.T) {
icmd.RunCmd(icmd.Command("docker", "create", "-v", ":/volume", fixtures.AlpineImage)).
Assert(t, icmd.Expected{
ExitCode: 125,
Err: "empty section between colons",
})
}
func TestCreateWithEmptyVolumeSpec(t *testing.T) {
icmd.RunCmd(icmd.Command("docker", "create", "-v", "", fixtures.AlpineImage)).
Assert(t, icmd.Expected{
ExitCode: 125,
Err: "invalid empty volume spec",
})
}