DockerCLI/cli
Sebastiaan van Stijn b5d0d179e7
Add back validation for invalid label values on containers
This adds validation to `docker container run` / `docker container create`;

Validation of labels provided through flags was removed in 31dc5c0a9a,
after the validation was changed to fix labels without values, and to prevent
labels from being expanded with environment variables in 2b17f4c8a8

However, now empty label names from _files_ (`--label-file`) followed different
validation rules than labels passed through `--label`.

This patch adds back minimal validation for labels passed through the command-line

Before this patch:

```bash
docker container create \
  --name label \
  --label==with-leading-equal-sign \
  --label=without-value \
  --label=somelabel=somevalue \
  --label "  =  " \
  --label=with-quotes-in-value='{"foo"}' \
  --label='with"quotes"in-key=test' \
  busybox

docker container inspect --format '{{json .Config.Labels}}' label
```

```json
{
  "": "with-leading-equal-sign",
  "  ": "  ",
  "somelabel": "somevalue",
  "with\"quotes\"in-key": "test",
  "with-quotes-in-value": "{\"foo\"}",
  "without-value": ""
}
```

After this patch:

```bash
docker container create \
  --name label \
  --label==with-leading-equal-sign \
  --label=without-value \
  --label=somelabel=somevalue \
  --label "  =  " \
  --label=with-quotes-in-value='{"foo"}' \
  --label='with"quotes"in-key=test' \
  busybox

invalid argument "=with-leading-equal-sign" for "-l, --label" flag: invalid label format: "=with-leading-equal-sign"
```

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-03-19 03:02:06 +01:00
..
command Add back validation for invalid label values on containers 2019-03-19 03:02:06 +01:00
compose Update compose 3.8 to disallow additional properties 2019-03-18 12:56:16 +01:00
config Merge pull request #1712 from thaJeztah/fix_test_for_go_1.12 2019-03-13 13:38:57 -07:00
connhelper connhelper: export functions for other projects 2019-03-02 21:11:49 +09:00
context Make default context behaves like a real context: 2019-03-18 11:45:46 +01:00
debug updated vendoring 2017-09-01 19:41:06 -04:00
flags Introduce docker context store 2019-01-04 17:06:51 +01:00
manifest Fix some spelling errors 2019-01-11 15:49:02 +08:00
registry/client cli/registry: fix a Debugf statement 2018-10-11 01:13:13 -07:00
streams Extract streams helpers from command package to their own package to remove a cyclic dependency from command to internal/containerizedengine 2019-01-28 14:36:00 +01:00
trust Update tests to use gotest.tools 👼 2018-06-08 18:24:26 +02:00
version Move versioning variables to a separate package. 2019-01-29 11:26:40 +00:00
winresources Add windows resources to binary. 2017-05-15 18:03:03 -04:00
cobra.go Use a copy of root flagset in `HandleGlobalFlags` 2019-03-13 11:28:17 +00:00
cobra_test.go Refactor plugins' vendor location on --help 2019-02-21 17:54:11 +01:00
error.go Import docker/docker/cli 2017-04-17 17:40:59 -04:00
required.go Singularize / pluralize "argument(s)" in error message 2017-08-12 18:25:38 +02:00
required_test.go Update tests to use gotest.tools 👼 2018-06-08 18:24:26 +02:00