diff options
| author | Jeff Halter <868228+jhalter@users.noreply.github.com> | 2022-01-30 20:56:04 -0800 |
|---|---|---|
| committer | Jeff Halter <jeff.d.halter@gmail.com> | 2022-01-30 20:56:04 -0800 |
| commit | 92a7e455a347e5be7fb69b6846b9f27ca698ae12 (patch) | |
| tree | cf7d2063123434adfa14f4f781ec4f7966a3adf1 /hotline/flattened_file_object.go | |
| parent | 154adcc6b47b3cb278f655a9580311e14de7444d (diff) | |
Sanitize file path input to prevent directory traversal
Diffstat (limited to 'hotline/flattened_file_object.go')
| -rw-r--r-- | hotline/flattened_file_object.go | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/hotline/flattened_file_object.go b/hotline/flattened_file_object.go index 656cdd3..02804f6 100644 --- a/hotline/flattened_file_object.go +++ b/hotline/flattened_file_object.go @@ -2,7 +2,6 @@ package hotline import ( "encoding/binary" - "fmt" "os" ) @@ -197,8 +196,12 @@ func (f flattenedFileObject) BinaryMarshal() []byte { return out } -func NewFlattenedFileObject(filePath, fileName string) (*flattenedFileObject, error) { - file, err := os.Open(fmt.Sprintf("%v/%v", filePath, fileName)) +func NewFlattenedFileObject(fileRoot string, filePath, fileName []byte) (*flattenedFileObject, error) { + fullFilePath, err := readPath(fileRoot, filePath, fileName) + if err != nil { + return nil, err + } + file, err := os.Open(fullFilePath) if err != nil { return nil, err } @@ -214,7 +217,7 @@ func NewFlattenedFileObject(filePath, fileName string) (*flattenedFileObject, er return &flattenedFileObject{ FlatFileHeader: NewFlatFileHeader(), - FlatFileInformationFork: NewFlatFileInformationFork(fileName), + FlatFileInformationFork: NewFlatFileInformationFork(string(fileName)), FlatFileDataForkHeader: FlatFileDataForkHeader{ ForkType: []byte("DATA"), CompressionType: []byte{0, 0, 0, 0}, |