When you extract a subfile from a container and write it to disk, you specify an extract directory and a path to extract the file to.
To set the path, you might use the path in the container file that you are extracting from, as returned Filter.ExtractGetSubFileInfo
method.
KeyView always sanitizes relative paths that you pass in when extracting files, so that the paths remain within the extract directory you specify. For example, KeyView does not allow the use of "..
" to move outside the extract directory.
KeyView can update absolute paths so that they remain within the extract directory. You can instruct KeyView to sanitize absolute paths programmatically (through the API), or by setting a parameter in the configuration file.
The following table shows the effect on some example paths.
Requested path | Path of extracted file (not sanitized) | Path of extracted file (sanitized) |
---|---|---|
file.txt
|
extractDir/file.txt
|
extractDir/file.txt
|
dir/file.txt
|
extractDir/dir/file.txt
|
extractDir/dir/file.txt
|
../file.txt
|
extractDir/file.txt
|
extractDir/file.txt
|
/dir/file.txt
|
/dir/file.txt
|
extractDir/dir/file.txt
|
To sanitize absolute paths
ExtractSubFileExtractConfig
that you pass in to the ExtractSubFile
method, set the property SanitizeAbsolutePaths
. When KeyView sanitizes a path and the resulting directory does not exist, extraction fails unless you instruct KeyView to create the directory, so you might also want to set the property CreateDirectory
. You can find the path that a file was actually extracted to from the ExtractSubFileExtractInfo
object that is returned from the ExtractSubFile
method.To sanitize absolute paths (through configuration)
In the formats.ini
configuration file, set the parameter SanitizeAbsoluteExtractPaths
, for example:
[Options] SanitizeAbsoluteExtractPaths=TRUE