Closes: #25281
Signed-off-by: Doug Davis <dug@us.ibm.com>
| ... | ... |
@@ -66,6 +66,11 @@ func env(b *Builder, args []string, attributes map[string]bool, original string) |
| 66 | 66 |
for j := 0; j < len(args); j++ {
|
| 67 | 67 |
// name ==> args[j] |
| 68 | 68 |
// value ==> args[j+1] |
| 69 |
+ |
|
| 70 |
+ if len(args[j]) == 0 {
|
|
| 71 |
+ return fmt.Errorf("ENV names can not be blank")
|
|
| 72 |
+ } |
|
| 73 |
+ |
|
| 69 | 74 |
newVar := args[j] + "=" + args[j+1] + "" |
| 70 | 75 |
commitStr += " " + newVar |
| 71 | 76 |
|
| ... | ... |
@@ -129,6 +134,11 @@ func label(b *Builder, args []string, attributes map[string]bool, original strin |
| 129 | 129 |
for j := 0; j < len(args); j++ {
|
| 130 | 130 |
// name ==> args[j] |
| 131 | 131 |
// value ==> args[j+1] |
| 132 |
+ |
|
| 133 |
+ if len(args[j]) == 0 {
|
|
| 134 |
+ return fmt.Errorf("LABEL names can not be blank")
|
|
| 135 |
+ } |
|
| 136 |
+ |
|
| 132 | 137 |
newVar := args[j] + "=" + args[j+1] + "" |
| 133 | 138 |
commitStr += " " + newVar |
| 134 | 139 |
|
| ... | ... |
@@ -696,6 +706,10 @@ func arg(b *Builder, args []string, attributes map[string]bool, original string) |
| 696 | 696 |
// name-value pair). If possible, it will be good to harmonize the two. |
| 697 | 697 |
if strings.Contains(arg, "=") {
|
| 698 | 698 |
parts := strings.SplitN(arg, "=", 2) |
| 699 |
+ if len(parts[0]) == 0 {
|
|
| 700 |
+ return fmt.Errorf("ARG names can not be blank")
|
|
| 701 |
+ } |
|
| 702 |
+ |
|
| 699 | 703 |
name = parts[0] |
| 700 | 704 |
value = parts[1] |
| 701 | 705 |
hasDefault = true |
| ... | ... |
@@ -2020,6 +2020,42 @@ func (s *DockerSuite) TestBuildRelativeCopy(c *check.C) {
|
| 2020 | 2020 |
} |
| 2021 | 2021 |
} |
| 2022 | 2022 |
|
| 2023 |
+func (s *DockerSuite) TestBuildBlankName(c *check.C) {
|
|
| 2024 |
+ name := "testbuildblankname" |
|
| 2025 |
+ _, _, stderr, err := buildImageWithStdoutStderr(name, |
|
| 2026 |
+ `FROM busybox |
|
| 2027 |
+ ENV =`, |
|
| 2028 |
+ true) |
|
| 2029 |
+ if err == nil {
|
|
| 2030 |
+ c.Fatal("Build was supposed to fail but didn't")
|
|
| 2031 |
+ } |
|
| 2032 |
+ if !strings.Contains(stderr, "ENV names can not be blank") {
|
|
| 2033 |
+ c.Fatalf("Missing error message, got: %s", stderr)
|
|
| 2034 |
+ } |
|
| 2035 |
+ |
|
| 2036 |
+ _, _, stderr, err = buildImageWithStdoutStderr(name, |
|
| 2037 |
+ `FROM busybox |
|
| 2038 |
+ LABEL =`, |
|
| 2039 |
+ true) |
|
| 2040 |
+ if err == nil {
|
|
| 2041 |
+ c.Fatal("Build was supposed to fail but didn't")
|
|
| 2042 |
+ } |
|
| 2043 |
+ if !strings.Contains(stderr, "LABEL names can not be blank") {
|
|
| 2044 |
+ c.Fatalf("Missing error message, got: %s", stderr)
|
|
| 2045 |
+ } |
|
| 2046 |
+ |
|
| 2047 |
+ _, _, stderr, err = buildImageWithStdoutStderr(name, |
|
| 2048 |
+ `FROM busybox |
|
| 2049 |
+ ARG =foo`, |
|
| 2050 |
+ true) |
|
| 2051 |
+ if err == nil {
|
|
| 2052 |
+ c.Fatal("Build was supposed to fail but didn't")
|
|
| 2053 |
+ } |
|
| 2054 |
+ if !strings.Contains(stderr, "ARG names can not be blank") {
|
|
| 2055 |
+ c.Fatalf("Missing error message, got: %s", stderr)
|
|
| 2056 |
+ } |
|
| 2057 |
+} |
|
| 2058 |
+ |
|
| 2023 | 2059 |
func (s *DockerSuite) TestBuildEnv(c *check.C) {
|
| 2024 | 2060 |
testRequires(c, DaemonIsLinux) // ENV expansion is different in Windows |
| 2025 | 2061 |
name := "testbuildenv" |