aboutsummaryrefslogtreecommitdiffstats
path: root/lib/stdlib/doc
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2017-02-24 10:09:21 +0100
committerGitHub <[email protected]>2017-02-24 10:09:21 +0100
commit133645d9a24e6a6d7123370ef332ca478598040e (patch)
tree7843f65b743222cc027090f2b94f8227f4d4a5ee /lib/stdlib/doc
parent6e687ee0c10d1c680d214baffcef7631eef52bc3 (diff)
parent8c7a68f3808a8d52f5cfc297a249ca4ef2480238 (diff)
downloadotp-133645d9a24e6a6d7123370ef332ca478598040e.tar.gz
otp-133645d9a24e6a6d7123370ef332ca478598040e.tar.bz2
otp-133645d9a24e6a6d7123370ef332ca478598040e.zip
Merge pull request #1350 from bjorng/bjorn/stdlib/safe-relative-path/OTP-14215
filename: Add safe_relative_path/1 OTP-14215
Diffstat (limited to 'lib/stdlib/doc')
-rw-r--r--lib/stdlib/doc/src/filename.xml27
1 files changed, 27 insertions, 0 deletions
diff --git a/lib/stdlib/doc/src/filename.xml b/lib/stdlib/doc/src/filename.xml
index 2a413835d0..f7f3f7b504 100644
--- a/lib/stdlib/doc/src/filename.xml
+++ b/lib/stdlib/doc/src/filename.xml
@@ -511,6 +511,33 @@ true
</func>
<func>
+ <name name="safe_relative_path" arity="1"/>
+ <fsummary>Sanitize a relative path to avoid directory traversal attacks.</fsummary>
+ <desc>
+ <p>Sanitizes the relative path by eliminating ".." and "."
+ components to protect against directory traversal attacks.
+ Either returns the sanitized path name, or the atom
+ <c>unsafe</c> if the path is unsafe.
+ The path is considered unsafe in the following circumstances:</p>
+ <list type="bulleted">
+ <item><p>The path is not relative.</p></item>
+ <item><p>A ".." component would climb up above the root of
+ the relative path.</p></item>
+ </list>
+ <p><em>Examples:</em></p>
+ <pre>
+1> <input>filename:safe_relative_path("dir/sub_dir/..").</input>
+"dir"
+2> <input>filename:safe_relative_path("dir/..").</input>
+[]
+3> <input>filename:safe_relative_path("dir/../..").</input>
+unsafe
+4> <input>filename:safe_relative_path("/abs/path").</input>
+unsafe</pre>
+ </desc>
+ </func>
+
+ <func>
<name name="split" arity="1"/>
<fsummary>Split a filename into its path components.</fsummary>
<desc>