Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
H
helm3
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
go
helm3
Commits
a4f46d7a
Unverified
Commit
a4f46d7a
authored
Oct 29, 2019
by
Matt Farina
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix error when loading irregular files
Signed-off-by:
Matt Farina
<
matt@mattfarina.com
>
parent
3e4c19b3
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
163 additions
and
0 deletions
+163
-0
load.go
pkg/chartutil/load.go
+7
-0
load_test.go
pkg/chartutil/load_test.go
+35
-0
Chart.yaml
pkg/chartutil/testdata/bad_symlink/Chart.yaml
+4
-0
LICENSE
pkg/chartutil/testdata/bad_symlink/LICENSE
+1
-0
README.md
pkg/chartutil/testdata/bad_symlink/README.md
+11
-0
dnull
pkg/chartutil/testdata/bad_symlink/dnull
+2
-0
template.tpl
pkg/chartutil/testdata/bad_symlink/templates/template.tpl
+1
-0
values.yaml
pkg/chartutil/testdata/bad_symlink/values.yaml
+6
-0
.helmignore
pkg/chartutil/testdata/frobnitz_symlinks/.helmignore
+1
-0
Chart.yaml
pkg/chartutil/testdata/frobnitz_symlinks/Chart.yaml
+20
-0
INSTALL.txt
pkg/chartutil/testdata/frobnitz_symlinks/INSTALL.txt
+1
-0
LICENSE
pkg/chartutil/testdata/frobnitz_symlinks/LICENSE
+1
-0
_ignore_me
pkg/chartutil/testdata/frobnitz_symlinks/charts/_ignore_me
+1
-0
Chart.yaml
...tutil/testdata/frobnitz_symlinks/charts/alpine/Chart.yaml
+5
-0
README.md
...rtutil/testdata/frobnitz_symlinks/charts/alpine/README.md
+9
-0
Chart.yaml
...a/frobnitz_symlinks/charts/alpine/charts/mast1/Chart.yaml
+5
-0
values.yaml
.../frobnitz_symlinks/charts/alpine/charts/mast1/values.yaml
+4
-0
alpine-pod.yaml
...frobnitz_symlinks/charts/alpine/templates/alpine-pod.yaml
+14
-0
values.yaml
...util/testdata/frobnitz_symlinks/charts/alpine/values.yaml
+2
-0
mariner-4.3.2.tgz
...tutil/testdata/frobnitz_symlinks/charts/mariner-4.3.2.tgz
+0
-0
README.md
pkg/chartutil/testdata/frobnitz_symlinks/docs/README.md
+1
-0
icon.svg
pkg/chartutil/testdata/frobnitz_symlinks/icon.svg
+8
-0
me.txt
pkg/chartutil/testdata/frobnitz_symlinks/ignore/me.txt
+0
-0
requirements.lock
pkg/chartutil/testdata/frobnitz_symlinks/requirements.lock
+8
-0
requirements.yaml
pkg/chartutil/testdata/frobnitz_symlinks/requirements.yaml
+7
-0
template.tpl
...artutil/testdata/frobnitz_symlinks/templates/template.tpl
+1
-0
values.yaml
pkg/chartutil/testdata/frobnitz_symlinks/values.yaml
+6
-0
walk.go
pkg/sympath/walk.go
+2
-0
No files found.
pkg/chartutil/load.go
View file @
a4f46d7a
...
...
@@ -355,6 +355,13 @@ func LoadDir(dir string) (*chart.Chart, error) {
return
nil
}
// Irregular files include devices, sockets, and other uses of files that
// are not regular files. In Go they have a file mode type bit set.
// See https://golang.org/pkg/os/#FileMode for examples.
if
!
fi
.
Mode
()
.
IsRegular
()
{
return
fmt
.
Errorf
(
"cannot load irregular file %s as it has file mode type bits set"
,
name
)
}
data
,
err
:=
ioutil
.
ReadFile
(
name
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"error reading %s: %s"
,
n
,
err
)
...
...
pkg/chartutil/load_test.go
View file @
a4f46d7a
...
...
@@ -23,6 +23,7 @@ import (
"os"
"path"
"path/filepath"
"runtime"
"strings"
"testing"
"time"
...
...
@@ -51,6 +52,40 @@ func TestLoadNonV1Chart(t *testing.T) {
t
.
Fatalf
(
"chart with v2 apiVersion should not load"
)
}
func
TestLoadDirWithSymlinks
(
t
*
testing
.
T
)
{
sym
:=
filepath
.
Join
(
".."
,
"frobnitz"
,
"README.md"
)
link
:=
filepath
.
Join
(
"testdata"
,
"frobnitz_symlinks"
,
"README.md"
)
if
err
:=
os
.
Symlink
(
sym
,
link
);
err
!=
nil
{
t
.
Fatal
(
err
)
}
defer
os
.
Remove
(
link
)
c
,
err
:=
Load
(
"testdata/frobnitz_symlinks"
)
if
err
!=
nil
{
t
.
Fatalf
(
"Failed to load testdata: %s"
,
err
)
}
verifyFrobnitz
(
t
,
c
)
verifyChart
(
t
,
c
)
verifyRequirements
(
t
,
c
)
}
func
TestLoadDirWithBadSymlinks
(
t
*
testing
.
T
)
{
if
runtime
.
GOOS
==
"windows"
{
t
.
Skip
(
"test only works on unix systems with /dev/null present"
)
}
_
,
err
:=
Load
(
"testdata/bad_symlink"
)
if
err
==
nil
{
t
.
Fatal
(
"Failed to detect bad symlink"
)
}
if
!
strings
.
HasPrefix
(
err
.
Error
(),
"cannot load irregular file"
)
{
t
.
Errorf
(
"Expected bad symlink error got %q"
,
err
)
}
}
func
TestLoadFile
(
t
*
testing
.
T
)
{
c
,
err
:=
Load
(
"testdata/frobnitz-1.2.3.tgz"
)
if
err
!=
nil
{
...
...
pkg/chartutil/testdata/bad_symlink/Chart.yaml
0 → 100644
View file @
a4f46d7a
apiVersion
:
v1
name
:
badsymlink
description
:
A bad symlink is in here
version
:
"
1.0.0"
pkg/chartutil/testdata/bad_symlink/LICENSE
0 → 100644
View file @
a4f46d7a
LICENSE placeholder.
pkg/chartutil/testdata/bad_symlink/README.md
0 → 100644
View file @
a4f46d7a
# Frobnitz
This is an example chart.
## Usage
This is an example. It has no usage.
## Development
For developer info, see the top-level repository.
pkg/chartutil/testdata/bad_symlink/dnull
0 → 120000
View file @
a4f46d7a
/dev/null
\ No newline at end of file
pkg/chartutil/testdata/bad_symlink/templates/template.tpl
0 → 100644
View file @
a4f46d7a
Hello {{.Name | default "world"}}
pkg/chartutil/testdata/bad_symlink/values.yaml
0 → 100644
View file @
a4f46d7a
# A values file contains configuration.
name
:
"
Some
Name"
section
:
name
:
"
Name
in
a
section"
pkg/chartutil/testdata/frobnitz_symlinks/.helmignore
0 → 100644
View file @
a4f46d7a
ignore/
pkg/chartutil/testdata/frobnitz_symlinks/Chart.yaml
0 → 100644
View file @
a4f46d7a
apiVersion
:
v1
name
:
frobnitz
description
:
This is a frobnitz.
version
:
"
1.2.3"
keywords
:
-
frobnitz
-
sprocket
-
dodad
maintainers
:
-
name
:
The Helm Team
email
:
helm@example.com
-
name
:
Someone Else
email
:
nobody@example.com
sources
:
-
https://example.com/foo/bar
home
:
http://example.com
icon
:
https://example.com/64x64.png
annotations
:
extrakey
:
extravalue
anotherkey
:
anothervalue
pkg/chartutil/testdata/frobnitz_symlinks/INSTALL.txt
0 → 100644
View file @
a4f46d7a
This is an install document. The client may display this.
pkg/chartutil/testdata/frobnitz_symlinks/LICENSE
0 → 100644
View file @
a4f46d7a
LICENSE placeholder.
pkg/chartutil/testdata/frobnitz_symlinks/charts/_ignore_me
0 → 100644
View file @
a4f46d7a
This should be ignored by the loader, but may be included in a chart.
pkg/chartutil/testdata/frobnitz_symlinks/charts/alpine/Chart.yaml
0 → 100644
View file @
a4f46d7a
apiVersion
:
v1
name
:
alpine
description
:
Deploy a basic Alpine Linux pod
version
:
0.1.0
home
:
https://helm.sh/helm
pkg/chartutil/testdata/frobnitz_symlinks/charts/alpine/README.md
0 → 100644
View file @
a4f46d7a
This example was generated using the command
`helm create alpine`
.
The
`templates/`
directory contains a very simple pod resource with a
couple of parameters.
The
`values.toml`
file contains the default values for the
`alpine-pod.yaml`
template.
You can install this example using
`helm install ./alpine`
.
pkg/chartutil/testdata/frobnitz_symlinks/charts/alpine/charts/mast1/Chart.yaml
0 → 100644
View file @
a4f46d7a
apiVersion
:
v1
name
:
mast1
description
:
A Helm chart for Kubernetes
version
:
0.1.0
home
:
"
"
pkg/chartutil/testdata/frobnitz_symlinks/charts/alpine/charts/mast1/values.yaml
0 → 100644
View file @
a4f46d7a
# Default values for mast1.
# This is a YAML-formatted file.
# Declare name/value pairs to be passed into your templates.
# name = "value"
pkg/chartutil/testdata/frobnitz_symlinks/charts/alpine/templates/alpine-pod.yaml
0 → 100644
View file @
a4f46d7a
apiVersion
:
v1
kind
:
Pod
metadata
:
name
:
{{
.Release.Name
}}
-{{.Chart.Name}}
labels
:
app.kubernetes.io/managed-by
:
{{
.Release.Service
}}
app.kubernetes.io/name
:
{{
.Chart.Name
}}
helm.sh/chart
:
"
{{.Chart.Name}}-{{.Chart.Version}}"
spec
:
restartPolicy
:
{{
default "Never" .restart_policy
}}
containers
:
-
name
:
waiter
image
:
"
alpine:3.9"
command
:
[
"
/bin/sleep"
,
"
9000"
]
pkg/chartutil/testdata/frobnitz_symlinks/charts/alpine/values.yaml
0 → 100644
View file @
a4f46d7a
# The pod name
name
:
"
my-alpine"
pkg/chartutil/testdata/frobnitz_symlinks/charts/mariner-4.3.2.tgz
0 → 100644
View file @
a4f46d7a
File added
pkg/chartutil/testdata/frobnitz_symlinks/docs/README.md
0 → 100644
View file @
a4f46d7a
This is a placeholder for documentation.
pkg/chartutil/testdata/frobnitz_symlinks/icon.svg
0 → 100644
View file @
a4f46d7a
<?xml version="1.0"?>
<svg
xmlns:svg=
"http://www.w3.org/2000/svg"
xmlns=
"http://www.w3.org/2000/svg"
xmlns:xlink=
"http://www.w3.org/1999/xlink"
version=
"1.0"
width=
"256"
height=
"256"
id=
"test"
>
<desc>
Example icon
</desc>
<rect
id=
"first"
x=
"2"
y=
"2"
width=
"40"
height=
"60"
fill=
"navy"
/>
<rect
id=
"second"
x=
"15"
y=
"4"
width=
"40"
height=
"60"
fill=
"red"
/>
</svg>
pkg/chartutil/testdata/frobnitz_symlinks/ignore/me.txt
0 → 100644
View file @
a4f46d7a
pkg/chartutil/testdata/frobnitz_symlinks/requirements.lock
0 → 100755
View file @
a4f46d7a
dependencies:
- name: alpine
version: "0.1.0"
repository: https://example.com/charts
- name: mariner
version: "4.3.2"
repository: https://example.com/charts
digest: invalid
pkg/chartutil/testdata/frobnitz_symlinks/requirements.yaml
0 → 100755
View file @
a4f46d7a
dependencies
:
-
name
:
alpine
version
:
"
0.1.0"
repository
:
https://example.com/charts
-
name
:
mariner
version
:
"
4.3.2"
repository
:
https://example.com/charts
pkg/chartutil/testdata/frobnitz_symlinks/templates/template.tpl
0 → 100644
View file @
a4f46d7a
Hello {{.Name | default "world"}}
pkg/chartutil/testdata/frobnitz_symlinks/values.yaml
0 → 100644
View file @
a4f46d7a
# A values file contains configuration.
name
:
"
Some
Name"
section
:
name
:
"
Name
in
a
section"
pkg/sympath/walk.go
View file @
a4f46d7a
...
...
@@ -22,6 +22,7 @@ package sympath
import
(
"fmt"
"log"
"os"
"path/filepath"
"sort"
...
...
@@ -69,6 +70,7 @@ func symwalk(path string, info os.FileInfo, walkFn filepath.WalkFunc) error {
if
err
!=
nil
{
return
fmt
.
Errorf
(
"error evaluating symlink %s: %s"
,
path
,
err
)
}
log
.
Printf
(
"found symbolic link in path: %s resolves to %s"
,
path
,
resolved
)
if
info
,
err
=
os
.
Lstat
(
resolved
);
err
!=
nil
{
return
err
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment