112 lines
4.3 KiB
Diff
112 lines
4.3 KiB
Diff
|
|
From af2e9918063d2797ba9f16306a4e7d2bbb0e85f7 Mon Sep 17 00:00:00 2001
|
||
|
|
From: DCCooper <1866858@gmail.com>
|
||
|
|
Date: Tue, 2 Mar 2021 15:48:52 +0800
|
||
|
|
Subject: [PATCH 10/10] trim space when counting length of fields to avoid
|
||
|
|
panic
|
||
|
|
|
||
|
|
Signed-off-by: DCCooper <1866858@gmail.com>
|
||
|
|
---
|
||
|
|
builder/dockerfile/parser/parser.go | 2 +-
|
||
|
|
builder/dockerfile/parser/parser_test.go | 22 ++++++++++++++++++-
|
||
|
|
.../testfiles/preprocess/cmd_with_directive | 2 ++
|
||
|
|
.../preprocess/cmd_with_directive_with_space | 2 ++
|
||
|
|
.../preprocess/entrypoint_with_directive | 2 ++
|
||
|
|
.../entrypoint_with_directive_with_space | 2 ++
|
||
|
|
.../preprocess/run_with_directive_with_space | 2 ++
|
||
|
|
7 files changed, 32 insertions(+), 2 deletions(-)
|
||
|
|
create mode 100644 builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive
|
||
|
|
create mode 100644 builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive_with_space
|
||
|
|
create mode 100644 builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive
|
||
|
|
create mode 100644 builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive_with_space
|
||
|
|
create mode 100644 builder/dockerfile/parser/testfiles/preprocess/run_with_directive_with_space
|
||
|
|
|
||
|
|
diff --git a/builder/dockerfile/parser/parser.go b/builder/dockerfile/parser/parser.go
|
||
|
|
index 3caa516a..a21a3f59 100644
|
||
|
|
--- a/builder/dockerfile/parser/parser.go
|
||
|
|
+++ b/builder/dockerfile/parser/parser.go
|
||
|
|
@@ -161,7 +161,7 @@ func format(rows []*rowLine, d *directive) ([]*parser.Line, error) {
|
||
|
|
fields := strings.SplitN(logicLine, " ", 2)
|
||
|
|
const validLineLen = 2
|
||
|
|
// we do not allow empty raw command been passed
|
||
|
|
- if len(fields) < validLineLen || len(fields[1]) == 0 {
|
||
|
|
+ if len(fields) < validLineLen || len(strings.TrimSpace(fields[1])) == 0 {
|
||
|
|
return nil, errors.Errorf("line %q should have at least two fields", logicLine)
|
||
|
|
}
|
||
|
|
line.Command = strings.ToUpper(fields[0])
|
||
|
|
diff --git a/builder/dockerfile/parser/parser_test.go b/builder/dockerfile/parser/parser_test.go
|
||
|
|
index 3da5bea6..870132f1 100644
|
||
|
|
--- a/builder/dockerfile/parser/parser_test.go
|
||
|
|
+++ b/builder/dockerfile/parser/parser_test.go
|
||
|
|
@@ -91,7 +91,27 @@ func TestFormat(t *testing.T) {
|
||
|
|
expect: 8,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
- name: "run_with_directive",
|
||
|
|
+ name: "run_with_directive",
|
||
|
|
+ wantErr: true,
|
||
|
|
+ },
|
||
|
|
+ {
|
||
|
|
+ name: "run_with_directive_with_space",
|
||
|
|
+ wantErr: true,
|
||
|
|
+ },
|
||
|
|
+ {
|
||
|
|
+ name: "cmd_with_directive",
|
||
|
|
+ wantErr: true,
|
||
|
|
+ },
|
||
|
|
+ {
|
||
|
|
+ name: "cmd_with_directive_with_space",
|
||
|
|
+ wantErr: true,
|
||
|
|
+ },
|
||
|
|
+ {
|
||
|
|
+ name: "entrypoint_with_directive",
|
||
|
|
+ wantErr: true,
|
||
|
|
+ },
|
||
|
|
+ {
|
||
|
|
+ name: "entrypoint_with_directive_with_space",
|
||
|
|
wantErr: true,
|
||
|
|
},
|
||
|
|
}
|
||
|
|
diff --git a/builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive b/builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive
|
||
|
|
new file mode 100644
|
||
|
|
index 00000000..545c278c
|
||
|
|
--- /dev/null
|
||
|
|
+++ b/builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive
|
||
|
|
@@ -0,0 +1,2 @@
|
||
|
|
+FROM scratch
|
||
|
|
+CMD \
|
||
|
|
diff --git a/builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive_with_space b/builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive_with_space
|
||
|
|
new file mode 100644
|
||
|
|
index 00000000..fc309502
|
||
|
|
--- /dev/null
|
||
|
|
+++ b/builder/dockerfile/parser/testfiles/preprocess/cmd_with_directive_with_space
|
||
|
|
@@ -0,0 +1,2 @@
|
||
|
|
+FROM scratch
|
||
|
|
+CMD \
|
||
|
|
diff --git a/builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive b/builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive
|
||
|
|
new file mode 100644
|
||
|
|
index 00000000..59369bea
|
||
|
|
--- /dev/null
|
||
|
|
+++ b/builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive
|
||
|
|
@@ -0,0 +1,2 @@
|
||
|
|
+FROM scratch
|
||
|
|
+ENTRYPOINT \
|
||
|
|
diff --git a/builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive_with_space b/builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive_with_space
|
||
|
|
new file mode 100644
|
||
|
|
index 00000000..172aa714
|
||
|
|
--- /dev/null
|
||
|
|
+++ b/builder/dockerfile/parser/testfiles/preprocess/entrypoint_with_directive_with_space
|
||
|
|
@@ -0,0 +1,2 @@
|
||
|
|
+FROM scratch
|
||
|
|
+ENTRYPOINT \
|
||
|
|
diff --git a/builder/dockerfile/parser/testfiles/preprocess/run_with_directive_with_space b/builder/dockerfile/parser/testfiles/preprocess/run_with_directive_with_space
|
||
|
|
new file mode 100644
|
||
|
|
index 00000000..c742c4c3
|
||
|
|
--- /dev/null
|
||
|
|
+++ b/builder/dockerfile/parser/testfiles/preprocess/run_with_directive_with_space
|
||
|
|
@@ -0,0 +1,2 @@
|
||
|
|
+FROM scratch
|
||
|
|
+RUN \
|
||
|
|
--
|
||
|
|
2.27.0
|
||
|
|
|