DockerCLI/cli/command/container
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
..
testdata Fix warnings not being printed on "create", only on "run" 2018-12-13 14:21:34 +01:00
attach.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
attach_test.go Update tests to use gotest.tools 👼 2018-06-08 18:24:26 +02:00
client_test.go tty initial size error 2019-02-12 09:14:50 +08:00
cmd.go Update gometalinter 2017-10-26 12:21:02 -04:00
commit.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
cp.go Prevent overwriting irregular files (cp, save, export commands) 2019-02-07 09:17:35 +01:00
cp_test.go Prevent overwriting irregular files (cp, save, export commands) 2019-02-07 09:17:35 +01:00
create.go Add --device support for Windows 2019-02-04 08:32:47 -08:00
create_test.go Fix: proxy-configuration being ignored on docker create 2019-01-19 12:33:33 +01:00
diff.go formatter package heavy refactoring 2018-10-23 17:05:44 +02:00
exec.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
exec_test.go Update tests to use gotest.tools 👼 2018-06-08 18:24:26 +02:00
export.go Prevent overwriting irregular files (cp, save, export commands) 2019-02-07 09:17:35 +01:00
export_test.go Prevent overwriting irregular files (cp, save, export commands) 2019-02-07 09:17:35 +01:00
formatter_diff.go formatter package heavy refactoring 2018-10-23 17:05:44 +02:00
formatter_diff_test.go formatter package heavy refactoring 2018-10-23 17:05:44 +02:00
formatter_stats.go formatter package heavy refactoring 2018-10-23 17:05:44 +02:00
formatter_stats_test.go formatter package heavy refactoring 2018-10-23 17:05:44 +02:00
hijack.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
inspect.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
kill.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
list.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
list_test.go Update tests to use gotest.tools 👼 2018-06-08 18:24:26 +02:00
logs.go don't need to type ssh password twice when docker logs with ssh 2018-10-26 08:22:49 +08:00
logs_test.go Update tests to use gotest.tools 👼 2018-06-08 18:24:26 +02:00
opts.go Add back validation for invalid label values on containers 2019-03-19 03:02:06 +01:00
opts_test.go Add --device support for Windows 2019-02-04 08:32:47 -08:00
pause.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
port.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
prune.go build: add options to builder prune 2018-09-05 00:01:16 +00:00
ps_test.go Update tests to use gotest.tools 👼 2018-06-08 18:24:26 +02:00
rename.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
restart.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
rm.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
run.go Add --device support for Windows 2019-02-04 08:32:47 -08:00
run_test.go TestRunLabel: pass detach as argument 2018-12-13 13:23:30 +01:00
start.go Mark checkpoint feature as Linux-only, and homogenize error messages 2018-05-31 22:25:06 +02:00
stats.go formatter package heavy refactoring 2018-10-23 17:05:44 +02:00
stats_helpers.go use char to check blockIO type 2019-03-11 10:01:22 +08:00
stats_helpers_test.go Update tests to use gotest.tools 👼 2018-06-08 18:24:26 +02:00
stats_unit_test.go use char to check blockIO type 2019-03-11 10:01:22 +08:00
stop.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
top.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
tty.go tty initial size error 2019-02-12 09:14:50 +08:00
tty_test.go tty initial size error 2019-02-12 09:14:50 +08:00
unpause.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
update.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
utils.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00
utils_test.go Update tests to use gotest.tools 👼 2018-06-08 18:24:26 +02:00
wait.go Switch from x/net/context to context 2018-05-11 16:49:43 -07:00