isula-build/patch/0048-trim-space-when-counting-length-of-fields-to-avoid-p.patch

112 lines
4.3 KiB
Diff
Raw Normal View History

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