puppetlabs/puppetlabs-stdlib — pull request #46 by jeffmccune (2012-03-07 19:59:54+00:00)
Title: (#12357) Add validate_absolute_path() function

This patch adds a new function to validate if a string is an absolute
filesystem path or not.

The intent of this is to make this functionality generic and reusable.
Josh left a comment in another pull request I had:

If node_installdir or $node_vardir is not defined, then we should
raise an error, otherwise we may create a scheduled task to an
untrusted directory.

One solution to this comment is to validate the Puppet variable is an
absolute path.

Examples of this function look like:

function_validate_absolute_path
Using Puppet::Parser::Scope.new
Garbage inputs
validate_absolute_path(nil) should fail
validate_absolute_path([nil]) should fail
validate_absolute_path({"foo"=>"bar"}) should fail
validate_absolute_path({}) should fail
validate_absolute_path("") should fail
relative paths
validate_absolute_path("relative1") should fail
validate_absolute_path(".") should fail
validate_absolute_path("..") should fail
validate_absolute_path("./foo") should fail
validate_absolute_path("../foo") should fail
validate_absolute_path("etc/puppetlabs/puppet") should fail
validate_absolute_path("opt/puppet/bin") should fail
absolute paths
validate_absolute_path("C:/") should not fail
validate_absolute_path("C:\\") should not fail
validate_absolute_path("C:\\WINDOWS\\System32") should not fail
validate_absolute_path("C:/windows/system32") should not fail
validate_absolute_path("X:/foo/bar") should not fail
validate_absolute_path("X:\\foo\\bar") should not fail
validate_absolute_path("/var/tmp") should not fail
validate_absolute_path("/var/lib/puppet") should not fail
validate_absolute_path("/var/opt/../lib/puppet") should not fail
validate_absolute_path("C:\\Program Files (x86)\\Puppet Labs\\Puppet Enterprise") should not fail
validate_absolute_path("C:/Program Files (x86)/Puppet Labs/Puppet Enterprise") should not fail

Finished in 0.05637 seconds
23 examples, 0 failures