keywords: safely encode symlink keywords
symlink(2) is a very dumb syscall, and allows you to put any damn value you please inside a symlink. In addition, spaces are valid path characters which causes issues with keyword parsing. So use Vis() and Unvis() to safely store an encoded version of the path. This also adds a cli test for this behaviour. Signed-off-by: Aleksa Sarai <asarai@suse.de>
This commit is contained in:
parent
30ae0132eb
commit
704d91fc7c
3 changed files with 39 additions and 3 deletions
6
tar.go
6
tar.go
|
@ -129,7 +129,11 @@ func (ts *tarStream) readHeaders() {
|
|||
log.Println(err)
|
||||
break
|
||||
}
|
||||
linkname := KeyVal(kv).Value()
|
||||
linkname, err := Unvis(KeyVal(kv).Value())
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
break
|
||||
}
|
||||
if _, ok := ts.hardlinks[linkname]; !ok {
|
||||
ts.hardlinks[linkname] = []string{hdr.Name}
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue